我有一些 TypeScript 代码(实际上)看起来像这样:
class User {
name: string = "Bob";
sayHello(): void {
console.log("Hello, " + this.name);
}
}
class RegisteredUser extends User {
name: string = "Frank";
sayHello(): void {
var s = super;
setTimeout(() => s.sayHello(), 1000);
}
}
var registeredUser = new RegisteredUser();
registeredUser.sayHello();
问题是 TypeScript(莫名其妙地,IMO)遵循关于“this”的奇怪的 JavaScript 规则,而不是像世界上所有其他编程语言那样做。因此,当从 RegisteredUser.sayHello() 中的覆盖调用 User.sayHello() 时,this
指向 User类而不是实例化的 RegisteredUser对象,因此实际记录的是:
Hello, undefined
除了这对我来说这样做没有任何意义(请参阅https://typescript.codeplex.com/workitem/477)之外,解决此问题的最佳方法是什么,以便this
在 User.sayHello () 从回调调用时指向正确的对象?