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);
}
}
이것이 유효한 접근 방식입니까?