Clonagem de objetos em TypeScript: cópia profunda e superficial
Olá! Sou novo em TypeScript (e JS em geral). Tenho um objeto com dados de usuário:
```typescript
interface User {
name: string;
age: number;
address: {
city: string;
street: string;
};
hobbies: string[];
}
const user: User = {
name: 'Анна',
age: 28,
address: {
city: 'Москва',
street: 'Тверская'
},
hobbies: ['leitura', 'corrida']
};
```
Preciso criar uma cópia deste objeto e alterar apenas `age`, mas de forma que o objeto original permaneça inalterado. Tentei simplesmente atribuir:
```typescript
const userCopy = user;
userCopy.age = 30;
```
Mas com isso `user.age` também mudou! Depois usei o spread operator:
```typescript
const userCopy = { ...user };
userCopy.age = 30;
```
Isso funcionou para `age`, mas quando tentei alterar `userCopy.address.city = 'СПб'`, o valor de `user.address.city` também mudou! E também não consigo entender como clonar corretamente objetos e arrays aninhados.