我正在升级一些旧的TypeScript代码,以使用最新的编译器版本,但我在调用setTimeout
时遇到了问题.代码将调用浏览器的setTimeout
函数,该函数返回一个数字:
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
然而,编译器正在将其解析为 node 实现,它返回一个NodeJS.计时器:
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
此代码不在 node 中运行,但 node 类型作为对其他内容的依赖(不确定是什么)被拉入.
我如何指示编译器 Select 我想要的setTimeout
版本?
以下是相关代码:
let n: number;
n = setTimeout(function () { /* snip */ }, 500);
这会产生编译器错误:
TS2322: Type 'Timer' is not assignable to type 'number'.