我有一个这样定义的打字稿类:
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中(根本没有工作!);)
会欣赏任何见解 - 新手打字稿的家伙,所以也许我错过了一些非常明显的东西
感谢
答案 0 :(得分:2)
由于您应用带有错误回调的选项,该错误回调正在访问类this
中的Foo
,因此在将这些选项应用于另一个函数(范围)时需要绑定此范围。
您的设置功能必须如此才能实现:
setup = () => {
this.options = {
error: this.error.bind(this)
}
}