Avatar ·

استنساخ الكائنات في 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` أيضًا! ولا أستطيع فهم كيفية استنساخ الكائنات المتداخلة والمصفوفات بشكل صحيح. ساعد