我正在升级一些旧的TypeScript代码以使用最新的编译器版本,我在调用setTimeout
时遇到了麻烦。该代码期望调用浏览器的setTimeout
函数,该函数返回一个数字:
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
但是,编译器将此解析为节点实现,该实现将返回NodeJS。定时器:
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
这段代码没有在节点中运行,但是节点类型被拉入作为对其他东西的依赖(不确定是什么)。
如何指示编译器选择我想要的setTimeout
版本?
下面是问题代码:
let n: number;
n = setTimeout(function () { /* snip */ }, 500);
这会产生编译器错误:
TS2322:类型'Timer'不能分配给类型'number'。