我正在做一个后端项目,其中有多个实体共享两个属性id
和description
。因此,我定义了一个基类来包含这些属性,并将其命名为BaseEntity
class BaseEntity {
id: string | number;
description: string;
}
我正在使用MongoDB数据库和Mongoose orm,因此我需要为模型和文档定义类型/接口。每个实体类型都有一个相关的文档类型,并且该文档类型将包含其相应实体类型的所有属性。定义文档类型的一种方法是为每个实体类型手动定义文档类型,另一种方法是(我觉得)定义一个通用的Document类型,该类型将作为实体类型之一的类型参数,并将继承其所有属性。我说的是这种事->
class DocumentType<ENTITY_TYPE extends BaseEntity> extends ENTITY_TYPE {
// additional properties
}
现在让我们假设存在两种类型的实体User
和Country
,它们被定义如下:
class User extends BaseEntity {
name: string;
address: string;
phoneNumber: number;
}
然后呢
class Country {
population: string;
code: string;
}
所以根据我的观点,类DocumentType<User>
应该有属性id, description, name, address, phoneNumber
,DocumentType<Country>
应该有属性id, description, population, code
。有可能吗?mixin是唯一的选择。(我必须补充的是,第一种方法在几天前是有效的,我通过//@ts-ignore抑制了一个类型脚本警告,但现在它根本不起作用)
1条答案
按热度按时间kupeojn61#
据我所知你想要这样的东西
现在可以创建Animal类的示例,其中Cat或Dog类作为泛型参数,如下所示: