我正在使用Webpack和@babel/typescript
来编译混合的TypeScript和JavaScript项目。
我正在使用--noImplicitAny
来鼓励打字。
我没有使用--allowJs
,因为我的项目太大,以至于它阻塞了TypeScript编译器,并且破坏了Visual Studio高亮显示/ Intellisense。
对于无类型的npm模块,如果我没有时间添加类型,则创建一个定义文件以将其类型显式设置为any
。例如
example.ts
import * as elemDataset from 'elem-dataset';
elem-dataset.ts
declare module 'elem-dataset';
满足编译器的要求。但是对于内部模块,我还没有转换为TS ...
import * as example from './example2'; // Where example2 is example2.ts
我收到此错误:
找不到模块'./example2'的类型声明文件。 C:/blah/blah/blah/example2.js隐式具有“ any”类型。
我尝试添加类型声明,例如在this answer中。
example2.d.ts
declare var example2: any;
declare module "example2" {
export = example2;
}
但随后出现此错误:
文件C:/blah/blah/blah/example2.d.ts不是一个模块。
我还尝试了this answer的declare module '*';
,但出现了与上述相同的错误。
如何将内部JS文件的导入类型显式设置为任何类型?
答案 0 :(得分:3)
结果证明这足以满足我的需求
// @ts-ignore
import * as x from './example2';
起初我没有尝试过,因为我认为注释会禁用整个文件的类型检查。
但是在导入之前使用@ts-ignore
可以使我对项目的其余部分执行类型检查,而忽略单个JavaScript文件,直到我有时间对其进行转换为止。