Avatar ·

تحميل المُنشئ في TypeScript: كيفية تعريف عدة خيارات بشكل صحيح؟

مرحبًا! لقد بدأت للتو في تعلم TypeScript وواجهت مشكلة مع overloading للمُهيئ (constructor). تقول الوثائق أن TypeScript يدعم overloading للدوال، لكنني لا أستطيع جعله يعمل مع مُهيئ class. لدي class `User` يجب أن يقبل مجموعات مختلفة من المعاملات: - الاسم والعمر (إلزامي) - الاسم فقط (العمر افتراضيًا 0) - كائن يحتوي على خصائص name و age هذا ما أحاول فعله: ```typescript class User { name: string; age: number; constructor(name: string, age: number); constructor(name: string); constructor(obj: {name: string, age: number}) { this.name = name; this.age = age; } } ``` TypeScript يشتكي: "Type '{name: string, age: number}' is not assignable to type 'string'". أفهم أن المشكلة تكمن في أن جميع التوقيعات (signatures) يجب أن تكون متوافقة، لكن كيف يمكنني تنفيذ overloading للمُهيئ بشكل صحيح؟ هل هناك طريقة أخرى لفعل ذلك؟ سأكون ممتنًا لشرح مفصل مع أمثلة.