我有两个TypeScript软件包,一个软件包(软件包A)取决于另一个(软件包B)。每个软件包都有一个使用Karma设置的单元测试。当我从NPM安装所有依赖项后分别运行每个单元测试时,单元测试运行良好。但是,如果我npm link package-b
在程序包A中使用并运行程序包A的单元测试,则会出现标题中指出的错误:“ TS2322:类型'超时'不能分配给类型'数字'。”
有问题的一行是对的致电setTimeout
。挖掘之后,我发现在不运行的情况下分别运行测试时npm link
,TypeScript可以正确地将setTimeout
签名标识typescript/lib/lib.dom
为所需类型,但是在失败的情况下使用TypeScript时要npm link
使用Node的setTimeout
签名@types/node/index
。我通过改变返回类型证实了这一setTimeout
来string
,观察同样的错误与string
在的地方Timeout
。
我不确定是为什么TypeScript编译器决定在这种特定情况下使用替代定义,还是我如何说服它使用所需的定义。我很高兴发布一些代码,但是我不确定在这种情况下什么有用,因为失败行上的所有内容都是setTimeout
调用。
您可以尝试使用window.setTimeout
而不是setTimeout,这样可以明确使用打字稿
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句