我有以下"noImplicitAny": true
项目,其项目为dependencies
(不是devDependencies
):
wr
u
bluebird
现在,当我尝试编译wr
时,出现tsc错误:
node_modules/u/dist/src/lib/dynamo/Dynamo.d.ts:1:27 - error TS7016: Could not find a declaration file for module 'bluebird'. '/home/ronjouch/work/wr/node_modules/bluebird/js/release/bluebird.js' implicitly has an 'any' type.
Try `npm install @types/bluebird` if it exists or add a new declaration (.d.ts) file containing `declare module 'bluebird';`
1 import * as Bluebird from 'bluebird';
~~~~~~~~~~
但是:
wr
与bluebird
无关,我不是想要@types/bluebird
的devDeps / deps中的wr
。u
的{{1}}中有@types/bluebird
,这是有道理的,因为它们需要构建devDependencies
,但无法运行,所以我不想移动他们u
(正常副手/ devDeps细微差别)。我了解有关 my 项目代码的错误(和修复),但是当它发生在 indirect 依赖项上时,该怎么办?是否有TS机制来解决这种情况? (忽略dependencies
的依赖项代码吗?自动获取类型?)
谢谢。
答案 0 :(得分:1)
如果依赖于node_modules/u/dist/src/lib/dynamo/Dynamo.d.ts
并由@types/bluebird
加载的文件wr
构成u
的公共API的一部分,则official recommendation为将@types/bluebird
放在dependencies
的{{1}}中就是为了避免此问题。原则上,u
支持package.json
可以在u
上声明的另一种依赖关系,当您在{{ 1}},但在运行@types/bluebird
时不会。但是从我的角度来看,许多软件包将类型声明捆绑在同一软件包中,因此,如果@types/bluebird
在npm install
中有wr
,则将npm install --production
添加到u
并不比bluebird
捆绑其类型声明更糟,人们不应该抱怨它。
如果dependencies
不是@types/bluebird
公用API的一部分,那么您应该弄清楚为什么dependencies
正在加载它并中断链。 / p>