typescript实现深拷贝
时间: 2024-02-23 19:54:13 浏览: 108
javascript深拷贝
在TypeScript中实现深拷贝有多种方式,其中一种常见的方式是使用递归。下面是一个示例代码,演示了如何在TypeScript中实现深拷贝:
```typescript
function deepCopy(obj: any): any {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let copy: any;
if (Array.isArray(obj)) {
copy = [];
for (let i = 0; i < obj.length; i++) {
copy[i] = deepCopy(obj[i]);
}
} else {
copy = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
}
return copy;
}
```
这个函数接受一个对象作为参数,并返回该对象的深拷贝。它首先检查对象的类型,如果是基本类型或null,则直接返回。如果是数组,则递归地对数组中的每个元素进行深拷贝。如果是对象,则递归地对对象的每个属性进行深拷贝。
使用这个函数,你可以实现对任意复杂对象的深拷贝。例如:
```typescript
const obj = {
name: 'John',
age: 30,
hobbies: ['reading', 'coding'],
address: {
street: '123 Main St',
city: 'New York'
}
};
const copy = deepCopy(obj);
console.log(copy);
```
这将输出一个与原始对象完全相同的深拷贝对象。
阅读全文