仅允许隐式任何定义文件

时间:2016-07-29 10:49:56

标签: typescript typescript-typings

我正在使用TypeScript,"noImplicitAny": true中设置了tsconfig.json选项。

我使用typings来管理类型定义文件,并在我的应用的入口点使用引用路径指令包含它们:

/// <reference path="./typings/index.d.ts" />

问题是某些定义文件依赖于隐式任意,所以现在我从.d.ts文件中得到了很多编译错误。

有没有办法禁用/静音这些错误,例如根据路径或文件类型?

2 个答案:

答案 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