打字稿"这"在传递的函数中

时间:2016-01-17 15:08:15

标签: javascript typescript

我有一个这样定义的打字稿类:

class Foo extends events.EventEmitter {
  private msg;

  constructor(){
      super();
  }

  public error=(err)=> {
      debug("got an error",err,this.msg.data);
   }


  setup=()=> {
    this.options = {
       error: this.error
    }
  }

  run=()=> {
    let x = require("someothermodule");
    x.run(this.options);
  }
 }

我在" x "时遇到的问题调用 options.error 函数是" TypeError:无法读取属性'数据'未定义的" ,果然,this.data 未定义

我想知道的是如何参考"适当的" 这个在错误函数中?

这是长途旅行的结果,尝试各种各样的选择,绑定,试图将其存储在_this中(根本没有工作!);)

会欣赏任何见解 - 新手打字稿的家伙,所以也许我错过了一些非常明显的东西

感谢

1 个答案:

答案 0 :(得分:2)

由于您应用带有错误回调的选项,该错误回调正在访问类this中的Foo,因此在将这些选项应用于另一个函数(范围)时需要绑定此范围。

您的设置功能必须如此才能实现:

setup = () => {
    this.options = {
        error: this.error.bind(this)
    }
}