*间接*依赖性 "Could not find a declaration file" 的 TypeScript 错误
TypeScript errors with "Could not find a declaration file" for *indirect* dependency
我有以下 "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
在wr
的devDeps/deps.
u
在其 devDependencies
中有 @types/bluebird
并且这是有道理的,因为他们需要构建 u
但对 运行 它没有用,所以我不想将它们移动到 dependencies
(正常 deps/devDeps 细微差别)。
我理解 my 项目代码的错误(并修复),但是当它发生在 上时我应该怎么做间接 依赖?是否有 TS 机制来涵盖这种情况? (忽略依赖代码的noImplicitAny
?自动获取类型?)
谢谢。
如果此文件 node_modules/u/dist/src/lib/dynamo/Dynamo.d.ts
依赖于 @types/bluebird
并由 wr
加载,则构成 [=13= 的 public API 的一部分],那么official recommendation就是把@types/bluebird
放在u
的dependencies
里面,正好可以避免这个问题。原则上,package.json
可以支持 u
可以在 @types/bluebird
上声明的另一种依赖性,当您 运行 npm install
在 wr
但不是在 运行 npm install --production
上。但在我看来,许多包将类型声明捆绑在同一个包中,因此如果 u
在 dependencies
中有 bluebird
,则将 @types/bluebird
添加到 dependencies
不比 bluebird
捆绑它的类型声明更糟,人们不应该抱怨它。
如果 node_modules/u/dist/src/lib/dynamo/Dynamo.d.ts
是 而不是 u
的 public API 的一部分,那么你应该弄清楚为什么 wr
正在加载它并打破链条。
我有以下 "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
在wr
的devDeps/deps.u
在其devDependencies
中有@types/bluebird
并且这是有道理的,因为他们需要构建u
但对 运行 它没有用,所以我不想将它们移动到dependencies
(正常 deps/devDeps 细微差别)。
我理解 my 项目代码的错误(并修复),但是当它发生在 上时我应该怎么做间接 依赖?是否有 TS 机制来涵盖这种情况? (忽略依赖代码的noImplicitAny
?自动获取类型?)
谢谢。
如果此文件 node_modules/u/dist/src/lib/dynamo/Dynamo.d.ts
依赖于 @types/bluebird
并由 wr
加载,则构成 [=13= 的 public API 的一部分],那么official recommendation就是把@types/bluebird
放在u
的dependencies
里面,正好可以避免这个问题。原则上,package.json
可以支持 u
可以在 @types/bluebird
上声明的另一种依赖性,当您 运行 npm install
在 wr
但不是在 运行 npm install --production
上。但在我看来,许多包将类型声明捆绑在同一个包中,因此如果 u
在 dependencies
中有 bluebird
,则将 @types/bluebird
添加到 dependencies
不比 bluebird
捆绑它的类型声明更糟,人们不应该抱怨它。
如果 node_modules/u/dist/src/lib/dynamo/Dynamo.d.ts
是 而不是 u
的 public API 的一部分,那么你应该弄清楚为什么 wr
正在加载它并打破链条。