typescript类内的外部回调绑定



我正在尝试将一个类的属性绑定到该类内部的回调。

快速示例:

// caller
const first = (): void => {
const testClass = new TestClass();
testClass.second(() => {
console.log(this.member) // error TS2532: Object is possibly 'undefined'
}
}
// TestClass
...
member: string = 'test';
second(cb: () => void) {
const self = this;
cb.bind(self)();
}

this似乎可能是未定义的。

如何从外部回调访问类成员?

Arrow Functions用于自动绑定到当前作用域和父对象,因此不能使用回调的绑定来调用它们。因此这里javascriptinterpreter试图找到回调之前定义的父级。

// caller
const first = (): void => {
const testClass = new TestClass();
testClass.second(function() {
console.log(this.member)
}
}

在控制台日志之前添加一个条件,以避免打印未定义的对象。

从你的例子:

// caller
const first = (): void => {
const testClass = new TestClass();
testClass.second(() => {
if (this.member) console.log(this.member)
}
}
// TestClass
...
member: string = 'test';
second(cb: () => void) {
const self = this;
cb.bind(self)();
}

最新更新