首页 > 解决方案 > 需要抽象属性的抽象类

问题描述

我正在使用这些双重抽象类,并且我试图要求第二个抽象类具有另一个抽象类的属性。但它失败了。

abstract class Static<C extends {[key: string]: any}> {
    abstract doughnut: boolean
}

class AlphaStatic extends Static<{ love: true }> {
    doughnut = true
}

abstract class Dynamic<C extends {[key: string]: any}> {
    abstract static: Static<C>
}

class AlphaDynamic extends Dynamic<{ love: true }> {
    static = AlphaStatic
}

操场

我怎样才能解决这个问题?

'AlphaDynamic' 类型中的属性 'static' 不能分配给基本类型 'Dynamic<{ love: true; 中的相同属性。}>'。'typeof AlphaStatic' 类型中缺少属性'doughnut',但在'Static<{ love: true; 类型中是必需的 }>'.ts(2416) Untitled-2(2, 14): 'doughnut' 在这里声明。

标签: typescript

解决方案


缺少“新”

abstract class Static<C extends {[key: string]: any}> {
    abstract doughnut: boolean
}

class AlphaStatic extends Static<{ love: true }> {
    doughnut = true
}

abstract class Dynamic<C extends {[key: string]: any}> {
    abstract static: Static<C>
}

class AlphaDynamic extends Dynamic<{ love: true }> {
    static = new AlphaStatic()
}

推荐阅读