仅允许隐式任何定义文件

Tom*_*ech 18 typescript typescript-typings

我正在使用TypeScript并"noImplicitAny": true在我的选项中设置tsconfig.json.

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

/// <reference path="./typings/index.d.ts" />
Run Code Online (Sandbox Code Playgroud)

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

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

car*_*ant 19

随着TypeScript 2.0的发布,skipLibCheck引入了编译器选项,它应该可以解决您的问题:

TypeScript 2.0添加了一个新的--skipLibCheck编译器选项,.d.ts可以跳过声明文件(带扩展名的文件)的类型检查.当程序包含大型声明文件时,编译器会花费大量时间类型检查已知不包含错误的声明,并且可以通过跳过声明文件类型检查来大大缩短编译时间.

由于一个文件中的声明可能会影响其他文件中的类型检查,因此在--skipLibCheck指定时可能无法检测到某些错误.例如,如果非声明文件增加了声明文件中声明的类型,则可能导致仅在检查声明文件时报告的错误.然而,在实践中,这种情况很少见.

它默认为false并且可以在您的tsconfig.json:

{
    "compilerOptions": {
        "skipLibCheck": true,
        ...
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)


Mos*_*ini 6

如果您需要在单个导入行上允许隐式any,则可以//@ts-ignore在未类型化模块导入之前使用属性,它将忽略隐式any(以及下一行的所有其他可能的错误,因此由您自己决定)没错),但是它很容易实现,并且很快就解决了我的很多头痛问题

例如我的字体真棒5

//@ts-ignore
import fontawesome from '@fortawesome/fontawesome';
//@ts-ignore
import regular from '@fortawesome/fontawesome-free-regular';

fontawesome.library.add(regular);
Run Code Online (Sandbox Code Playgroud)

另外,它与webpack一起正常工作