打字稿:超时的正确类型是什么?

Bil*_*ill 8 typescript reactjs

处理定时器时正确的类型是什么?我曾尝试Timeoutnumber

  let debounceResize: any;
//                     ^ What should this be?
  window.addEventListener('resize', () => {
    clearTimeout(debounceResize);
    debounceResize = setTimeout(calcCanvasSize, 500);
  });
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

hoa*_*gdv 14

对于这种情况,我会给你两个选择:

  1. 定义类型debounceResize为返回类型setTimeout,使用ReturnType原生泛型。
let debounceResize: ReturnType<typeof setTimeout>;
Run Code Online (Sandbox Code Playgroud)
  1. 使用window.setTimeout而不仅仅是setTimeoutwindow.setTimeout返回一个数字。
let debounceResize: number;

debounceResize = window.setTimeout(() => {}, 1000);
Run Code Online (Sandbox Code Playgroud)


Sha*_*tin 7

在 Web 浏览器应用程序中,setTimeout返回一个number.

此设置需要DOM库(或等效项)。

在此处输入图片说明

在 NodeJS应用程序中,setTimeout返回一个NodeJS.Timeout.

npm install @types/node --save-dev`. 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 谢谢您,我尝试添加类型编号,但收到此错误:类型“超时”不可分配给类型“数字”。 (2认同)