在 TypeScript 中,setInterval
函数的返回类型是 NodeJS.Timeout
。这是因为在 Node.js
环境中,setInterval
返回一个 Timeout
对象,而在浏览器环境中,setInterval
返回一个唯一的 interval ID
(作为 number
类型)。所以需要使用联合类型 NodeJS.Timeout | number
。
let timer: NodeJS.Timeout | number;
timer = setInterval(() => {
console.log('Hello, world!');
}, 1000);
提示:
如果存在报错:找不到命名空间“NodeJS”
这个错误通常发生在 TypeScript
试图找到 NodeJS
命名空间,但是没有找到。这可能是因为你的项目没有安装 @types/node
,或者没有正确地引入它。
可以尝试以下步骤来解决这个问题:
- 首先,查看你的项目有没有安装
@types/node
。如果没有安装可以通过运行npm install @types/node --save-dev
来安装。
npm install @types/node --save-dev
- 然后,新建一个名为
typing.d.ts
的文件;在文件的顶部添加以下代码来引入NodeJS
命名空间:
/// <reference types="node" />
添加就是为了告诉 TypeScript 在 node 类型定义中查找 NodeJS 命名空间。