【发布时间】:2017-12-22 12:31:11
【问题描述】:
有没有将对象映射到其他对象的好方法?也欢迎图书馆推荐。
例如,假设我有这些类:
export class Draft {
id: number;
name: string;
summary: string;
}
export class Book {
id: number;
name: string;
info: Info;
}
export class Info {
value: string;
}
传统上,要将字段从Draft 映射到Book,我必须为每个字段手动执行此操作:
export class Book {
[...]
fromDraft(Draft draft) {
this.id = draft.id;
this.name = draft.name;
this.info = new Info();
this.info.value = draft.summary;
}
}
有没有更简单的方法来映射以相同方式命名的对象字段?例如Draft 和Book 的id 和name 字段,同时还能够定义自定义映射,例如从draft.summary 到book.info.value。
请注意,这与我的实际用例相差甚远。在这里,手动进行分配还不错,但是对于具有许多类似名称字段的对象来说,这是一件很麻烦的事情。
谢谢!
【问题讨论】:
-
真的不知道你的问题是什么意思,但你能不能简单地将
Book和Draft抽象成一个更通用的父类,共享公共字段,以及来自该父类的extend?或者,您可以使用decorators。 -
这可能是一个选择,谢谢!
标签: typescript casting typing