【发布时间】:2019-03-02 17:45:29
【问题描述】:
class CoreClass {
coreProp: string
// cannot do classABProp: string | number
// as it interferes with persistence and cannot be easily
// used to define database schema.
}
class ClassA extends CoreClass {
classAProp: string
};
class ClassB extends CoreClass {
classBPorp: number
};
class SubClass extends CoreClass {
// Expected Props
// coreProp: string
// classAProp: string || classBPorp: number
// should have atleast one of the two.
}
所以我一直在寻找一种巧妙的方法来做到这一点。 我不愿意定义 SubClass 两次,这本质上是在做同样的事情。
我确实为每个类都有一个构造函数,所以我真的不想定义单独的类型来完成相同的任务。
似乎是一个微不足道的问题,但我无法理解它。
我们将不胜感激。
【问题讨论】:
-
我不清楚
Subclass应该是什么......如果你想要一个代表任何子类的类型,你可以使用联合类型type Subclass = ClassA | ClassB -
SubClass 会有自己的构造函数,因此将其分配为类型并不是最好的方法。
-
所以
Subclass需要同时继承ClassA和ClassB吗?或者您只是想确保它实现与ClassA和Class B相同的接口 -
SubClass应该具有CoreClass的所有属性,并且应该具有classAProp或classBProp,但应该至少具有这两个属性之一。这就是我所说的 oneOf 类型,因为类型 on 可以很容易地使用联合运算符来完成,而不是如何对类进行同样的操作。
标签: typescript inheritance multiple-inheritance typescript-typings