استنساخ الكائنات في TypeScript: النسخ العميق والسطحي
مرحبًا! أنا مبتدئ في TypeScript (و JS بشكل عام). لدي كائن ببيانات المستخدم:
```typescript
interface User {
name: string;
age: number;
address: {
city: string;
street: string;
};
hobbies: string[];
}
const user: User = {
name: 'Анна',
age: 28,
address: {
city: 'Москва',
street: 'Тверская'
},
hobbies: ['чтение', 'бег']
};
```
أحتاج إلى إنشاء نسخة من هذا الكائن وتغيير `age` فقط فيها، بحيث يبقى الكائن الأصلي دون تغيير. جربت ببساطة الإسناد:
```typescript
const userCopy = user;
userCopy.age = 30;
```
ولكن تغير أيضًا `user.age`! ثم استخدمت spread operator:
```typescript
const userCopy = { ...user };
userCopy.age = 30;
```
هذا نجح مع `age`، ولكن عندما حاولت تغيير `userCopy.address.city = 'СПб'`، تغيرت قيمة `user.address.city` أيضًا! ولا أستطيع فهم كيفية استنساخ الكائنات المتداخلة والمصفوفات بشكل صحيح.
ساعد