Avatar ·

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 中运行的代码。