最佳答案
我不确定在 TypeScript 中处理“ this”范围的最佳方法。
下面是我正在转换到 TypeScript 的代码中的一个常见模式示例:
class DemonstrateScopingProblems {
private status = "blah";
public run() {
alert(this.status);
}
}
var thisTest = new DemonstrateScopingProblems();
// works as expected, displays "blah":
thisTest.run();
// doesn't work; this is scoped to be the document so this.status is undefined:
$(document).ready(thisTest.run);
现在,我可以把电话改成..。
$(document).ready(thisTest.run.bind(thisTest));
确实有用。但是有点可怕。这意味着代码在某些情况下都可以编译并正常工作,但是如果我们忘记绑定作用域,它就会中断。
我想要一种在类中完成它的方法,这样在使用类时我们就不需要担心“ this”的作用域是什么。
有什么建议吗?
另一种有效的方法是使用胖箭头:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
这个方法有效吗?