# deepClone

### 说明

深拷贝

### 源码

[https://github.com/ddzy/ts-utility-plugins/tree/master/src/ddzy/utility/others/deepClone](https://github.com/ddzy/ts-utility-plugins/tree/master/src/ddzy/utility/others/deepClone)

### 用法

{% code title="deepClone.test.ts" %}
```typescript
import { deepClone } from "../../utility/others/deepClone";

describe('deepClone', () => {
  test('deepClone should copy the whole object and return', () => {
    const received = {
      name: 'duan',
      age: 20,
      skills: ['run', 'programm', 'read'],
      friends: [
        {
          name: 'jack',
          age: 21,
        },
        {
          name: 'lucy',
          age: 22,
        },
      ],
      program: {
        deepth: 40,
        related: {
          website: [
            {
              name: 'juejin',
              address: 'https://juejin.io/timeline',
            },
            {
              name: 'zhihu',
              address: 'https://zhihu.com'
            },
          ],
        },
      },
      focus: true,
    };

    expect(deepClone(received).name).toBe('duan');
    expect(
      (deepClone(received).skills as string[])[0]
    ).toBe('run');
    expect(
      (deepClone(received).friends as {
        name: string,
        age: number,
      }[])[0].name
    ).toBe('jack');
    expect(
      (deepClone(received).program as any).deepth
    ).toBe(40);
    expect(
      (deepClone(received) as any).program.related.website[0].name
    ).toBe('juejin');

    received.name = 'received';
    received.skills[0] = 'received';
    received.friends[0].name = 'received';
    received.program.deepth = 20;
    received.program.related.website[0].name = 'received';
  });
});

```
{% endcode %}
