“SubConstructor”可分配给类型“B”的约束,但“B”可以使用约束“BaseConstructor”的不同子类型进行实例化

问题描述 投票:0回答:1

我是泛型新手,我做了一个设计,使用泛型来提高代码灵活性。但就我而言,我遇到了一个奇怪的问题,出现上述错误。我的要求是,我希望能够将值从基类的子类的子类传递到基类,以便在基类中执行操作并将值返回给子类。我在这里附上了我的代码片段。 游乐场

在这里,您可以找到错误并帮助我重构我的代码,以便我可以在基础级别引入所有操作,或者帮助我通过针对我的案例的任何解决方法来解决此错误。

javascript angular angularjs typescript angularjs-directive
1个回答
0
投票

错误消息可能是对您的解释:

类型“SubConstructor”不可分配给类型“B”。 “SubConstructor”可分配给类型“B”的约束,但“B”可以使用约束“BaseConstructor”的不同子类型进行实例化。

我在这里切断了通用约束。不确定它是否真的对您有帮助:

export abstract class Base {
    protected prop1: BaseConstructor|undefined;
}

export class SubBase extends Base {
    constructor() {
        super()
        this.prop1 = new SubConstructor('Here')
    }
}

export class BaseConstructor {
    protected id!: number
}


export class SubConstructor extends BaseConstructor{
    // some properties
    subProp1: string = ''
    constructor(subProp1: string) {
        super()
        this.subProp1 = subProp1
    }
}

export class SubBaseChild extends SubBase {
    constructor() {
        super()
    }
}

export class SubBaseChildConstructor extends BaseConstructor {
    subChildProp: number = 0
    constructor(subChildProp: number) {
        super()
        this.subChildProp = subChildProp
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.