Angular v2+ typescript deep copy/clone with getters
Angular v2+ typescript deep copy/clone with getters
如何copy/clone打字稿class?父 class 包含嵌套 class 以及嵌套 class 的集合。每种 class 都包含一个 getter。
我想如果复制的 class 没有丢失 getters,并且嵌套的 class 和数组项有一个新的引用。
我的问题是,JSON.parse(JSON.stringify( obj ));
没有复制 getter。 Object.assign(target, soure);
复制了 getter,但数组项保留了原始引用。
这是classes
的结构
export interface IClassA {
code: number;
description: string;
}
export class ClassA implements IClassA {
code: number;
description: string;
get descrAndCode() {
return 'Getter A ' + this.description + ':' + this.code;
}
}
export interface IClassB {
name: string;
code: number;
classList: Array<ClassA>;
}
export class ClassB implements IClassB {
name: string;
code: number;
get codeAndName(): string {
return 'Getter B' + this.code + ':' + this.name;
}
nested: ClassA;
classList: Array<ClassA>;
}
另一种方法是使用下面的 lodash clonedeep()
方法
使用 getter & setter
深度复制对象
import * as cloneDeep from 'lodash/cloneDeep';
...
let foo = cloneDeep(bar);
希望这对您有所帮助!
如何copy/clone打字稿class?父 class 包含嵌套 class 以及嵌套 class 的集合。每种 class 都包含一个 getter。 我想如果复制的 class 没有丢失 getters,并且嵌套的 class 和数组项有一个新的引用。
我的问题是,JSON.parse(JSON.stringify( obj ));
没有复制 getter。 Object.assign(target, soure);
复制了 getter,但数组项保留了原始引用。
这是classes
的结构export interface IClassA {
code: number;
description: string;
}
export class ClassA implements IClassA {
code: number;
description: string;
get descrAndCode() {
return 'Getter A ' + this.description + ':' + this.code;
}
}
export interface IClassB {
name: string;
code: number;
classList: Array<ClassA>;
}
export class ClassB implements IClassB {
name: string;
code: number;
get codeAndName(): string {
return 'Getter B' + this.code + ':' + this.name;
}
nested: ClassA;
classList: Array<ClassA>;
}
另一种方法是使用下面的 lodash clonedeep()
方法
getter & setter
深度复制对象
import * as cloneDeep from 'lodash/cloneDeep';
...
let foo = cloneDeep(bar);
希望这对您有所帮助!