我有两个TypeScript包,其中一个包(包A)依赖于另一个包(包B).每个包都有一个使用Karma设置的单元测试.在安装了NPM中的所有依赖项之后,当我分别 for each 依赖项运行单元测试时,单元测试运行良好.然而,如果我在包A中使用npm link package-b并运行包A的单元测试,那么我会得到标题中所述的错误:"TS2322:类型‘Timeout’不可分配给类型‘number’."

有问题的电话是打setTimeout.挖掘之后,我发现,在不使用npm link单独运行测试时,TypeScript正确地将typescript/lib/lib.dom中的setTimeout签名识别为所需类型,但在使用npm link后失败的情况下,它使用的是@types/node/index中 node 的setTimeout签名.我确认了这一点,将返回类型从setTimeout改为string,并观察到相同的错误,string代替Timeout.

我不确定的是,TypeScript编译器已经决定在这个特定的情况下使用替代定义,也不确定我如何说服它使用所需的定义.我很高兴发布一些代码,但我不确定在这种情况下什么会有用,因为失败的线路上只有setTimeout个调用.

推荐答案

您可以try 使用window.setTimeout而不是setTimeout,这样就可以显式使用typescript one

Typescript相关问答推荐

带脉轮UI的TypScript支持StyleProps的正确方法是什么?

如何准确确定此特定场景中的类型?

脉轮ui打字脚本强制执行图标按钮的咏叹调标签-如何关闭

如果在TypeScript中一个原始的类方法是递归的,如何使用类decorator 模式?

React router 6.22.3不只是在生产模式下显示,为什么?

在TypeScript中,除了映射类型之外还使用的`in`二进制运算符?

webpack错误:模块找不到.当使用我的其他库时,

Typescript泛型类型:按其嵌套属性映射记录列表

为什么Typescript不能推断类型?

(TypeScript)TypeError:无法读取未定义的属性(正在读取映射)"

->;Boolean类型的键不能分配给类型Never

有没有办法在Zod中使用跨字段验证来判断其他字段,然后呈现条件

为什么上下文类型在`fn|curred(Fn)`的联合中不起作用?

当数组类型被扩展并提供标准数组时,TypeScrip不会抱怨

Cypress-验证别名的存在或将别名中的文本与';if';语句中的字符串进行比较

在打印脚本中将对象类型转换为数组

使用RXJS获取数据的3种不同REST API

两个接口的TypeScript并集,其中一个是可选的

如何通过nx找到所有受影响的项目?

在Typescript 无法正常工作的 Three.js 中更新动画中的 GLSL 统一变量