Avatar ·

تحميل المُنشئ في TypeScript: كيفية التنفيذ الصحيح؟

مرحبًا بالجميع! بدأت في تعلم TypeScript وواجهت مشكلة في overloading المُنشئ. في لغات أخرى (مثل Java أو C#) اعتدت على إمكانية تعريف عدة constructors بمعاملات مختلفة. لكن في TypeScript لا يعمل الأمر بنفس الطريقة. لنفترض أنني أريد إنشاء كلاس `User` يمكن تهيئته إما بسلسلة نصية (email) أو بكائن يحتوي على اسم وعمر. جربت كتابة الكود التالي: ```typescript class User { constructor(email: string) { // ... } constructor(name: string, age: number) { // ... } } ``` لكن TypeScript يعطي خطأ: "Duplicate function implementation". أفهم أنه في JavaScript لا يوجد overloading حقيقي، فكيف يمكن التعامل مع هذا؟ أحتاج إلى أن يكون الكلاس قابلاً للإنشاء بطرق مختلفة: 1. `new User("john@example.com")` — فقط email 2. `new User("John", 25)` — اسم وعمر 3. `new User()` — كائن فارغ (قيم افتراضية) كيف يمكن تنفيذ هذا بشكل صحيح في TypeScript؟ سمعت عن union types، rest parameters.