类型'void'上不存在属性'bind'

时间:2017-08-24 06:37:07

标签: angular typescript

我有以下代码:

setInterval(this.CheckIfCameraIsAvailable(false).bind(this), 2 * 60 * 1000);

 private CheckIfCameraIsAvailable(forceCheck: boolean) {

}

我有以下错误:

  

'void'

类型中不存在属性'bind'

当我从(CheckIfCameraIsAvailable)函数中删除(forceCheck:boolean)参数时,错误将被解决,但我想将参数传递给函数。

1 个答案:

答案 0 :(得分:8)

在您的示例中,您不小心调用了该函数,然后尝试在结果上使用.bind。正确的长手代码如下(您将false参数作为bind的一部分传递:

class Example {
  CheckIfCameraIsAvailable(forceCheck: boolean) {
    alert(forceCheck);
  }

  run() {
    setInterval(this.CheckIfCameraIsAvailable.bind(this, false), 2000);
  }
}

const example = new Example();
example.run();

保留词法范围的简便方法是使用箭头函数:

class Example {
  CheckIfCameraIsAvailable(forceCheck: boolean) {
    alert(forceCheck);
  }

  run() {
    setInterval(() => this.CheckIfCameraIsAvailable(false), 2000);
  }
}

const example = new Example();
example.run();

这相当于引入了这样一个中间变量:

class Example {
  CheckIfCameraIsAvailable(forceCheck: boolean) {
    alert(forceCheck);
  }

  run() {
    const _this = this;
    setInterval(function () { _this.CheckIfCameraIsAvailable(false) }, 2000);
  }
}

const example = new Example();
example.run();