0

假设我有一个包含其他库的类:

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已启用

4

0 回答 0