Avatar ·

تحديد نوع الكائن عند إنشاء حرفي في TypeScript

مرحبًا بالجميع! بدأت مؤخرًا في تعلم TypeScript وواجهت مشكلة تبدو غريبة بالنسبة لي. عندما أقوم بإنشاء كائن باستخدام حرفي، أريد تحديد نوعه بوضوح، لكنني لا أفهم كيفية القيام بذلك بشكل صحيح. إليك مثال: لدي واجهة `User`، وأريد إنشاء كائن `user` بهذا النوع. جربت عدة طرق، لكنني لست متأكدًا أي منها صحيح وما الفرق بينها. ```typescript interface User { name: string; age: number; } // الطريقة 1: تعليق النوع بعد التصريح const user1: User = { name: 'أليكسي', age: 30 }; // الطريقة 2: تحويل النوع const user2 = { name: 'ماريا', age: 25 } as User; // الطريقة 3: بدون نوع const user3 = { name: 'إيفان', age: 35 }; ``` الأسئلة: 1. ما الفرق بين هذه الأساليب؟ 2. أي منها هو الأفضل؟ 3. لماذا يسمح TypeScript في بعض الحالات بإضافة خصائص إضافية، بينما لا يسمح في حالات أخرى؟ ما يربكني بشكل خاص هو الموقف عندما أريد تمرير كائن إلى دالة، حيث