我正在努力升级一些旧的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);
这会产生编译器错误:
TS2322:不能将“计时器”类型分配给“数字”类型。