/** * this util module is about to provide array related utils * @module angle-util/arrayUtil */ export interface AnyObject { [propName: string]: any } function deepCopy (original: Array): Array function deepCopy (original: AnyObject): AnyObject function deepCopy (original: any): any function deepCopy (original: Array | AnyObject | any): Array | AnyObject | any { if (Array.isArray(original)) { return original.map(elem => deepCopy(elem)) } else if (typeof original === 'object' && original !== null) { return (Object).fromEntries( (Object).entries(original) .map(([k, v]) => [k, deepCopy(v)])) } else { // Primitive value: atomic, no need to copy return original } } export default { // 深拷贝 NOTE 相较简单的JSON hack拥有更好的性能 deepCopy }