我想在我的编译器中启用noImplicitAny
标志。 我的问题是我使用lodash/fp,到目前为止没有打字。TypeScript在Javascript源代码中使用noImplicitAny
所以编译器会抱怨缺少lodash/fp的定义文件。
有没有办法允许隐式的只有外部js文件?或者将node_modules
这样的子目录列入白名单?
我想在我的编译器中启用noImplicitAny
标志。 我的问题是我使用lodash/fp,到目前为止没有打字。TypeScript在Javascript源代码中使用noImplicitAny
所以编译器会抱怨缺少lodash/fp的定义文件。
有没有办法允许隐式的只有外部js文件?或者将node_modules
这样的子目录列入白名单?
我解决这个问题的方法是通过创建一个文件来声明我想要使用的没有类型的模块。例如,我会创建一个名为modules.ts
的文件,并且简单地打印我想要使用的模块,如下所示:declare module 'name-of-module'
。现在在任何文件中,我想使用我的非输入模块,我可以简单地导入我的modules.ts
,然后使用import * as
语法来使用我想要使用的模块。它所做的就是将其从隐式任意改为显式,但这当然不会给你这些模块的类型,它只是允许你使用它们。
在你tsconfig.json你应该具备以下条件:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"noResolve": true,
"sourceMap": true,
"noImplicitAny": true,
"removeComments": true,
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}
这可以防止node_modules文件夹从因为他们是最有可能已经被JavaScript的编译为JavaScript。
如果“文件”和“包括”均为未指定,则编译器默认为包括所有打字稿(.TS,.d.ts和.tsx)文件在含有目录和子目录,除了那些使用排除“排除”属性。
那不是否定任何分型模块可能有哪些? –
tsconfig仅用于编译时。这告诉编译器在编译为JS期间忽略node_modules文件夹。 –