类 内的打字稿外部回调绑定
typescript external callback binding within classes
我正在尝试将 class 的属性绑定到 class 中的回调。
快速示例:
// 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
似乎未定义。
如何从外部回调访问 classes 成员?
在控制台日志前添加一个条件,以避免打印未定义的对象。
根据您的示例:
// 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)();
}
Arrow Functions
用于自动绑定到当前范围和父对象,因此您不能使用回调的绑定来调用它们。
所以这里 javascript interpreter
试图找到之前定义回调的父级。
// caller
const first = (): void => {
const testClass = new TestClass();
testClass.second(function() {
console.log(this.member)
}
}
我正在尝试将 class 的属性绑定到 class 中的回调。
快速示例:
// 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
似乎未定义。
如何从外部回调访问 classes 成员?
在控制台日志前添加一个条件,以避免打印未定义的对象。
根据您的示例:
// 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)();
}
Arrow Functions
用于自动绑定到当前范围和父对象,因此您不能使用回调的绑定来调用它们。
所以这里 javascript interpreter
试图找到之前定义回调的父级。
// caller
const first = (): void => {
const testClass = new TestClass();
testClass.second(function() {
console.log(this.member)
}
}