*间接*依赖性 "Could not find a declaration file" 的 TypeScript 错误

TypeScript errors with "Could not find a declaration file" for *indirect* dependency

我有以下 "noImplicitAny": true 项目,其 dependencies(不是 devDependencies):

现在,当我尝试编译 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';
                            ~~~~~~~~~~

但是:

我理解 my 项目代码的错误(并修复),但是当它发生在 上时我应该怎么做间接 依赖?是否有 TS 机制来涵盖这种情况? (忽略依赖代码的noImplicitAny?自动获取类型?)

谢谢。

如果此文件 node_modules/u/dist/src/lib/dynamo/Dynamo.d.ts 依赖于 @types/bluebird 并由 wr 加载,则构成 [=13= 的 public API 的一部分],那么official recommendation就是把@types/bluebird放在udependencies里面,正好可以避免这个问题。原则上,package.json 可以支持 u 可以在 @types/bluebird 上声明的另一种依赖性,当您 运行 npm installwr 但不是在 运行 npm install --production 上。但在我看来,许多包将类型声明捆绑在同一个包中,因此如果 udependencies 中有 bluebird,则将 @types/bluebird 添加到 dependencies不比 bluebird 捆绑它的类型声明更糟,人们不应该抱怨它。

如果 node_modules/u/dist/src/lib/dynamo/Dynamo.d.ts 而不是 u 的 public API 的一部分,那么你应该弄清楚为什么 wr 正在加载它并打破链条。