打字稿:导入js模块时忽略任何类型

Max*_*nin 7 typescript

在Typescript项目中,我需要导入一些在自己内部执行module.exports的旧js文件.

正如我导入:

import * as httpConnection from '...path...';
Run Code Online (Sandbox Code Playgroud)

我从编译器得到错误:

Could not find a declaration file for module '...path...'. '...path...' implicitly has an 'any' type.
Run Code Online (Sandbox Code Playgroud)

之后它工作正常,但我需要在控制台中避免此错误.

如何在不创建声明文件的情况下让编译器理解导入有任何类型?

提前感谢您的想法.

deK*_*joo 18

这意味着你应该输入这个模块。Typescript 对这个模块隐含地没有任何定义文件不满意。

如果它是一个外部公共模块,您可能只能使用 npm install @types/name_of_the_module

(有些模块现在甚至在 lib 中有它们的定义文件。所以只要 npm 安装模块就会给你 .d.ts 定义。但这里可能不是这种情况)

如果它是私有代码或者您找不到它,您可以.d.ts在它旁边添加一个文件,理想情况下可以键入其所有功能。如果您愿意牺牲打字,因为您没有时间这样做,您可以any在模块上使用以下显式类型.d.ts

declare var name_of_the_module: any;

declare module "name_of_the_module" {
    export = name_of_the_module;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

正如@stsloth 所指出的,对于 Typescript 2.6,您也可以通过// @ts-ignore在导入上方添加一行来完全忽略错误。

  • 作为补充。对于没有发布类型的公共模块,一种解决方法可能只是忽略错误:在带有 `import` 的行之前添加一行带有 `// @ts-ignore` 的行。此功能自 [TypeScript 2.6(2017 年 10 月 31 日发布)](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-6.html#suppress-errors-in- ts-files-using--ts-ignore-comments),并且只能作为最后的手段。 (20认同)

ska*_*tus 9

您可以global.d.ts在项目的根目录中创建一个名为:的文件并添加以下内容:

declare module '*';
Run Code Online (Sandbox Code Playgroud)