Is there a good way to map objects to other objects? Library recommendations welcome too.
For example, say I have these classes:
export class Draft {
With regards to copying properties of the same name, you can use Object.assign:
fromDraft(Draft draft) {
Object.assign(this, draft);
this.info = new Info();
this.info.value = draft.summary;
}
The problem is that it will also create this.summary
, but it's a convenient way of copying properties so if you can model your classes differently then you can use it.
Another option is to have a list of shared property names and then iterate it:
const SHARED_NAMES = ["id", "name"];
fromDraft(Draft draft) {
SHARED_NAMES.forEach(name => this[name] = draft[name]);
this.info = new Info();
this.info.value = draft.summary;
}