如何在Typescript界面​​中引用self的类型(对于IClonable界面)

alt*_*ler 6 typescript

我需要一个IClonable定义clone()成员的接口,该接口返回实现该成员的类的实例。

如果可能的话,如何指示返回类型与clone()调用的类相同?

interface IClonable {
    clone(): ???
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用下面的泛型来做到这一点,但这似乎太冗长了

interface IClonable<T> {
    clone(): T
}
Run Code Online (Sandbox Code Playgroud)

sma*_*c89 7

非常简单地将返回类型设置为 this

interface IClonable {
    clone(): this;
}
Run Code Online (Sandbox Code Playgroud)

  • @deamon 是的,打字稿团队似乎很难正确实现此功能,并且由于编译器的性能问题,他们不得不恢复一堆使用它的代码。我更新了我的答案,展示了不同的方法 (2认同)