我正在使用TypeScript,"noImplicitAny": true
中设置了tsconfig.json
选项。
我使用typings
来管理类型定义文件,并在我的应用的入口点使用引用路径指令包含它们:
/// <reference path="./typings/index.d.ts" />
问题是某些定义文件依赖于隐式任意,所以现在我从.d.ts
文件中得到了很多编译错误。
有没有办法禁用/静音这些错误,例如根据路径或文件类型?
答案 0 :(得分:17)
随着TypeScript 2.0的发布,引入了skipLibCheck
编译器选项,它应该可以解决您的问题:
TypeScript 2.0添加了一个新的
--skipLibCheck
编译器选项,可以跳过声明文件(扩展名为.d.ts
的文件)的类型检查。当程序包含大型声明文件时,编译器会花费大量时间类型检查已知不包含错误的声明,并且可以通过跳过声明文件类型检查来大大缩短编译时间。由于一个文件中的声明会影响其他文件中的类型检查,因此在指定
--skipLibCheck
时可能无法检测到某些错误。例如,如果非声明文件扩充了声明文件中声明的类型,则可能会导致仅在检查声明文件时报告的错误。但是,在实践中这种情况很少见。
默认为false
,可以在tsconfig.json
中启用
{
"compilerOptions": {
"skipLibCheck": true,
...
},
...
}
答案 1 :(得分:2)
如果您需要在单个导入行上允许隐式任意,则可以在非类型化模块导入之前使用//@ts-ignore
属性
它将忽略隐含的任何(以及以下行的所有其他可能的错误,因此由您决定是否正确)
但它很容易死,很快就解决了我很多头痛的问题
例如for font awesome 5 i's
//@ts-ignore
import fontawesome from '@fortawesome/fontawesome';
//@ts-ignore
import regular from '@fortawesome/fontawesome-free-regular';
fontawesome.library.add(regular);
另外,它适用于webpack