说我目前有以下模型结构,
class Entity {
id : string;
}
class HateoasEntity extends Entity{
_links : any;
_msgs : any;
}
class EditableEntity extends HateoasEntity{
_new : boolean;
_editInProgress : boolean
}
class Employee extends EditableEntity{
name : string;
address : string;
}
为此,我可以创建自定义的打字稿装饰器来添加那些没有继承的元数据吗?
@Entity
@HateoasEntity
@EditableEntity
class Employee{
name : string;
address: string;
}
与装饰器搭配使用是一种好方法吗?还是我要实现的是不良设计?
答案 0 :(得分:0)
您可以通过将必需的字段添加到类原型中,使用打字机装饰器来存档所需的行为。但是,您将失去TypeScript的主要好处-输入信息。
interface EntityFields {
id : string;
}
interface HateoasFields {
_links : any;
_msgs : any;
}
interface EditableFields {
_new : boolean;
_editInProgress : boolean
}
interface EmployeeFields {
name : string;
address : string;
}
type Employee = EntityFields & HateoasFields & EditableFields & EmployeeFields
这样,您仍然可以输入信息,并且可以轻松地在其他地方重复使用字段。