类继承中的通用扩展约束不起作用

时间:2019-12-16 16:23:47

标签: typescript

所以我有那些课:

export abstract class Parent<T> {
    ...
    public abstract <C extends Parent<T>>clone(): C;
}
export class Child extends Parent<number> {
    ...
    public <Child>clone(): Child {
        return new Child();
    }
}

这似乎对我来说是正确的,但是我遇到了这个错误:

Child is assignable to the constraint of type 'Child', but 'Child' could be instantiated with a 
different subtype of constraint '{}'

我知道编译器试图告诉我该约束可能未得到遵守,但我看不到如何做到。 我该如何解决?

1 个答案:

答案 0 :(得分:0)

所以我想出了一个更简单的解决方案。 我的真正问题是我不知道可以覆盖方法并将返回类型更改为更受约束的类型。

这是我的解决方案:

export abstract class Parent<T> {
    ...
    public abstract clone(): Parent<T>;
}
export class Child extends Parent<number> {
    ...
    public clone(): Child {
        return new Child();
    }
}