假设我有这个包装其他库的类:
class A {
method(callback: () => void): void {
// ...
}
}
这个使用它:
class B {
a: A;
constructor() {
this.a = new A();
}
do(): void {
this.a.method(this.doLater);
this.a.method(() => this.doLater());
}
doLater(): void {
// ...
}
}
B.do()
内的两个调用都会编译,但第一个调用在运行时失败,因为它在尝试调用this
时丢失了doLater()
个上下文。可以理解的。我无能为力,但我希望能够编写A.method()
签名,以便您不得不在呼叫站点使用箭头功能,因为我无法修改库代码。这可能吗?
我正在使用TypeScript 2.5.2并启用了--noImplicitThis