打字稿:Return "this" 来自通用基础 class

Typescript: Return "this" from generic base class

我想从基础 class return "this" 作为泛型类型参数。

class ExampleClass<T> {
    public returnThis = (): T => {
        return <T>this;
    }
}

我知道我不能转换为 T,因为打字稿不知道 T 派生自 ExampleClass。
但是有没有办法做到这一点?

您可以 return 输入 this:

class ExampleClass<T> {
    public returnThis = (): this => {
        return this;
    }
}

它包含在文档的 Polymorphic this types 部分。


编辑

不,它将return实际实例的类型,例如:

class BaseClass {
    public returnThis(): this {
        return this;
    }
}

class ExampleClass extends BaseClass {}

let base = new BaseClass();
let base2 = base.returnThis(); // base2 instanceof BaseClass

let example = new ExampleClass();
let example2 = example.returnThis(); // example2 instanceof ExampleClass 

(code in playground)