Javascript typescript";这";内传递函数

Javascript typescript";这";内传递函数,javascript,typescript,Javascript,Typescript,我有一个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:

我有一个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”调用选项时,我遇到的问题是。error函数是“TypeError:无法读取未定义的属性'data',果然,this.data是未定义的

我想知道的是如何在这个错误函数中引用“正确的”值

这是一个漫长旅程的结果,尝试了各种选项,绑定,试图将其存储在_This中(根本不起作用!))

我会很感激任何有洞察力的新手打字的家伙,所以也许我错过了一些非常明显的东西


谢谢

因为您在类
Foo
中通过访问
this
的错误回调应用了选项,所以在将这些选项应用到另一个函数(作用域)时,您需要绑定此作用域

要实现这一点,您的设置功能必须如下所示:

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

由于使用错误回调应用选项,该错误回调正在类
Foo
中访问
this
,因此在将这些选项应用于另一个函数(作用域)时,需要绑定此作用域

要实现这一点,您的设置功能必须如下所示:

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

我没有看到任何代码设置
msg
字段的值。如果您从未更改
this.msg
值,您希望它如何具有非
未定义的
值?创建选项对象时,尝试将Foo的范围绑定到error方法:
error:this.error.bind(this)
。如果你需要更多的细节,我可以详细说明。@MattiasBuelens:对不起,这只是一个小代码“片段”——所以我没有充实所有的代码。apologies@FlorianTopf当前位置这似乎对我有用-非常感谢much@jmls好吧,如果我们看不到如何以及何时设置这个.msg
,我们就无法为您提供很多帮助。您的代码可以正常工作-假设
this.msg
x
调用错误回调时有一个值。我没有看到任何代码设置
msg
字段的值。如果您从未更改
this.msg
值,您希望它如何具有非
未定义的
值?创建选项对象时,尝试将Foo的范围绑定到error方法:
error:this.error.bind(this)
。如果你需要更多的细节,我可以详细说明。@MattiasBuelens:对不起,这只是一个小代码“片段”——所以我没有充实所有的代码。apologies@FlorianTopf当前位置这似乎对我有用-非常感谢much@jmls好吧,如果我们看不到如何以及何时设置这个.msg
,我们就无法为您提供很多帮助。您拥有的代码可以正常工作-假设
this.msg
x
调用错误回调时有一个值。