기본적으로 this는 클래스 자신이지만, sayMarried 메서드처럼 명시적으로 this를 타이핑할 수도 있습니다. sayCallback 메서드를 주의 깊게 보아야 하는데 매개변수로 콜백 함수를 가지고 있습니다. 여기서 콜백 함수의 this는 this로 타이핑되어 있습니다. 이렇게 되면 콜백 함수의 this 타입이 Person 인스턴스가 됩니다.
조금 더 구체적인 예시를 들어보겠습니다.
class A {
callbackWithThis(cb: (this: this) => void) {
cb.call(this);
}
callbackWithoutThis(cb: () => void) {
cb();
}
}
new A().callbackWithThis(function() {
this;
});
// this: A
new A().callbackWithoutThis(function() {
this;
});
// 'this' implicitly has type 'any' because it does not have a type annotation.