تحميل المُنشئ في 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.