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

时间:2020-02-16 05:50:04

标签: reactjs typescript

处理计时器时正确的类型是什么?我已经尝试过Timeoutnumber

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

enter image description here enter image description here enter image description here

3 个答案:

答案 0 :(得分:8)

在这种情况下,我将给您两个选择:

  1. debounceResize的类型定义为setTimeout的返回类型,使用ReturnType本机泛型。
let debounceResize: ReturnType<typeof setTimeout>;
  1. 使用window.setTimeout而不是setTimeoutwindow.setTimeout返回一个数字。
let debounceResize: number;

debounceResize = window.setTimeout(() => {}, 1000);

答案 1 :(得分:4)

在Web浏览器应用中,setTimeout returns a number

此设置需要startAbsenceBtn.translatesAutoresizingMaskIntoConstraints = false库(或等效库)。

enter image description here

在NodeJS 应用中,setTimeout returns a NodeJS.Timeout

此设置需要DOM

enter image description here

答案 2 :(得分:-1)

更新答案。现在可以使用了。

state.obj = { ...state.obj, newProp: 123 }