我正在使用一些不受欢迎的模块,例如Dyo
和js-sha3
,它们似乎没有任何类型。
我现在真的不在乎第三方库中的类型,我不想花很多时间来键入这些类型。我主要在服务器上使用它,以限制我的错误并使开发过程中的故障排除更加容易。
之前我有一个Cannot find module X
错误,所以我在tsconfig.json文件中添加了"moduleResolution": "node"
。
如何使打字稿不抱怨节点模块缺少类型?
整个错误:
Could not find a declaration file for module 'dyo'. '/node_modules/dyo/dist/dyo.umd.js' implicitly has an 'any' type.
Try `npm install @types/dyo` if it exists or add a new declaration (.d.ts) file containing `declare module 'dyo';` [7016]
我在网络中某个暗处的评论中发现了// @ts-nocheck
,但似乎不起作用。
我可以通过模块将其关闭吗?
答案 0 :(得分:2)
对于不想创建自己的 .d.ts
定义文件的人,您可以在 "noImplicitAny": false
中使用 tsconfig.json
以允许使用没有 TypeScript 定义文件的外部库。
示例:
{
"compileOnSave": false,
"compilerOptions": {
...
"noImplicitAny": false,
...
}
}
}
这允许 TypeScript 从每个缺失的类型推断 any
类型,因此这也会影响您自己的项目。
答案 1 :(得分:0)
您可以创建虚拟的.d.ts
定义,该定义允许从模块中导入任何内容-导入它会导致dyo
具有any
类型的内容(确切的导入方式取决于esModuleInterop
编译器设置,以及如何从dyo.umd.js
导出内容。
在项目中的某个位置创建一行文件dyo.d.ts
declare module 'dyo';
在引用该模块的文件中,在此行的顶部添加dyo.d.ts
文件的适当路径:
/// <reference path='./dyo.d.ts' />
2的替代方法是将dyo.d.ts
添加到tsconfig.json
文件的编译中包含的文件的列表中:
"files": [
... other files as necessary ...
"./path/to/dyo.d.ts"
]