试图这样:
/**
* Deep clones an array of instances of type T and returns a new array.
* @param array The array to deep clone
* @return A new deep clone of the array argument
*
* @example
打字稿说:
[ts] Spread types may only be created from object types.
不应该T扩展Object来处理这个吗?
最佳答案
如果使用spread运算符复制对象,则新对象将不是类的实例,而是不具有类型的文字对象,因此它不会是现有对象的真实克隆.
如果要克隆的对象是由您(而不是外部库)定义的,则可以执行以下操作:
export function deepClone(array: any[]): any[] {
return array.map((e:any) => (new e.constructor(e)));
}
然后在你的课程中要克隆:
constructor(obj: any) {
Object.assign(this,obj);
}