1 | let scrollTimer: number = setTimeout(function () {}) |
通过 cmd
+ 点击定位,发现setTimeout
使用的是 Node.js 下的接口定义
@types/node index.d.ts1
declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
通过yarn.lock
定位依赖,发现来源于@types/react-dom
1
2@types/react-dom
dependencies @types/node
而在typescript中,window
下的setTimeout
返回的是number
:1
2
3
4
5
6
7
8interface WindowTimers extends WindowTimersExtension {
clearInterval(handle?: number): void;
clearTimeout(handle?: number): void;
setInterval(handler: (...args: any[]) => void, timeout: number): number;
setInterval(handler: any, timeout?: any, ...args: any[]): number;
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
setTimeout(handler: any, timeout?: any, ...args: any[]): number;
}
解决:
- 移除对
@type/node
的依赖(不太可行) - 使用window.setTimeout
1
let scrollTimer: number = window.setTimeout(function () {})