TypeScript-setInterval是什么类型

gfe*_*els 11 javascript typescript typescript2.0 angular

如果我想为变量分配类型,稍后将为其分配setInterval,如下所示:

this.autoSaveInterval = setInterval(function(){
      if(this.car.id){
        this.save();
      }
      else{
        this.create();
      }
    }.bind(this), 50000);
Run Code Online (Sandbox Code Playgroud)

应该为this.autosaveInterval可变类型分配什么类型?

小智 55

迟到了,但最好的类型(特别是因为类型是不透明的,我们只关心我们可以将它传递给clearInterval()以后)可能是自动推导的,即。就像是:

ReturnType<typeof setInterval>
Run Code Online (Sandbox Code Playgroud)

  • 伙计,这绝对应该被选为正确答案。“数字”不起作用,尤其是在角度方面 (2认同)
  • 我正在参加聚会,号码也不适合我,谢谢! (2认同)
  • 解决问题的最简洁方法,适用于所有环境 (2认同)
  • 哇,不知道 ReturnType。那是巨大的! (2认同)

Ang*_*Boy 15

我相信它的 NodeJS.Timeout 和 widow.setInterval 是数字:

const nodeInterval: NodeJS.Timeout = setInterval(() => {
  // do something
}, 1000);

const windowInterval: number = window.setInterval(() => {
  // do something
}, 1000);
Run Code Online (Sandbox Code Playgroud)

  • 类型不是 NodeJS.Timeout 而是 **NodeJS.Timer** (5认同)

use*_*238 14

类型是数字;

private autoSaveInterval: number = setInterval( ()=>{console.log('123')},5000);
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是 TypeScript,并且您会收到编译器错误,因为以某种方式推断出 NodeJS.Timer 类型:更改为 window.setInterval 以指定您没有使用 node 并且应该使用 DOM 类型,这确实是数字。 (8认同)
  • @gfels因为setInterval返回该值,该值表示设置的计时器的ID值。您可以将此值与clearInterval()方法一起使用来取消计时器。它不是函数,因为您没有为其分配函数处理程序,**您正在为其分配函数的结果/返回值。** (3认同)
  • 它不是node.js中的数字 (3认同)

Sta*_*dik 11

类型取决于要使用的函数,这里有2个重载,返回类型用红色bounding-box标记:

在此处输入图片说明

为了使用返回数字的那个,请使用:

window.setInterval(...)
Run Code Online (Sandbox Code Playgroud)

  • 您好,如果您使用 Visual Studio 并搜索实现,这不是一本可以找到的书。 (2认同)