TypeScript: 如何正确使用 setTimeout(window 与 Node.js)?
大家好!我刚开始学习 TypeScript,在使用 `setTimeout` 时遇到了一个令人困惑的问题。我正在为 Web 应用编写一个简单的定时器,但 TypeScript 对类型报错。
这是我的代码:
```typescript
const timerId = setTimeout(() => {
console.log("3 秒过去了");
}, 3000);
clearTimeout(timerId);
```
TypeScript 报错:"Argument of type 'number' is not assignable to parameter of type 'Timeout'"。我很困惑。在 JavaScript 中,`setTimeout` 总是返回一个数字(定时器的数字 ID),我可以轻松地将其传递给 `clearTimeout`。为什么在 TypeScript 中这不起作用?
我搜索了一下,发现有两个不同的 `setTimeout`:一个用于浏览器(window.setTimeout),一个用于 Node.js(global.setTimeout)。它们返回不同的类型:在浏览器中是 `number`,而在 Node.js 中是 `NodeJS.Timeout` 对象。现在我不明白如何让 TypeScript 使用正确的版本。
我的目标是编写既能在浏览器中运行,也能在 Node 中运行的代码。