TypeScript在Javascript源代码中使用noImplicitAny
我想在编译器中启用TypeScript在Javascript源代码中使用noImplicitAny,javascript,typescript,typescript-typings,Javascript,Typescript,Typescript Typings,我想在编译器中启用noImplicitAny标志。 我的问题是我使用lodash/fp,到目前为止还没有打字 因此,编译器抱怨缺少lodash/fp的定义文件 有没有一种方法只允许外部js文件使用隐式any?或者将一个子目录(如node\u modules?)列入白名单,我解决这一问题的方法是创建一个文件,在其中声明我要使用的没有键入的模块。例如,我将创建一个名为modules.ts的文件,其中有一个我想要使用的模块:声明模块“模块名称”。现在,在任何我想使用非类型模块的文件上,我可以简单地导入
noImplicitAny
标志。
我的问题是我使用lodash/fp,到目前为止还没有打字
因此,编译器抱怨缺少lodash/fp的定义文件
有没有一种方法只允许外部js文件使用隐式any?或者将一个子目录(如
node\u modules
?)列入白名单,我解决这一问题的方法是创建一个文件,在其中声明我要使用的没有键入的模块。例如,我将创建一个名为modules.ts
的文件,其中有一个我想要使用的模块:声明模块“模块名称”
。现在,在任何我想使用非类型模块的文件上,我可以简单地导入我的modules.ts
,然后使用import*作为
语法导入我想使用的模块。这样做的目的是将其从隐式any更改为显式any,但这当然不会为这些模块提供打字,它只允许您使用它们 在tsconfig.json中,您应该具有以下内容:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"noResolve": true,
"sourceMap": true,
"noImplicitAny": true,
"removeComments": true,
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}
这将防止node_modules文件夹被编译为JavaScript,因为它们很可能已经是JavaScript了
如果未指定“文件”和“包含”,则编译器默认包括包含目录和子目录中的所有TypeScript(.ts、.d.ts和.tsx)文件,但使用“排除”属性排除的文件除外
您可以创建一个扩展名为“.d.ts”的声明文件,比如ambient-modules.d.ts 在此文件中添加以下行
declare module '*';
你完了
现在,您仍然可以享受noImplicitAny标志的好处,而不用担心其他没有任何可用类型的js文件
有关更多信息,您可以参考,这会否定模块可能具有的任何类型吗?tsconfig仅用于编译时。这会告诉编译器在编译到JS时忽略node_modules文件夹。我也希望使用此选项…我有一个正在转换的大型项目,我希望启用noImplicitAny,但也允许在JS源文件中使用它。。