相关疑难解决方法(0)

TypeScript - 使用正确版本的setTimeout(节点与窗口)

我正在努力升级一些旧的TypeScript代码以使用最新的编译器版本,而我在调用时遇到问题setTimeout.代码期望调用浏览器的setTimeout函数返回一个数字:

setTimeout(handler: (...args: any[]) => void, timeout: number): number;

但是,编译器正在将此解析为节点实现,它返回NodeJS.Timer:

setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;

此代码不在节点中运行,但节点类型作为对其他内容的依赖(不确定是什么)而被拉入.

如何指示编译器选择setTimeout我想要的版本?

这是有问题的代码:

let n: number;
n = setTimeout(function () { /* snip */  }, 500);
Run Code Online (Sandbox Code Playgroud)

这会产生编译器错误:

TS2322:类型'定时器'不能分配给'数字'类型.

typescript

61
推荐指数
7
解决办法
3万
查看次数

标签 统计

typescript ×1