هل يمكن تمديد (extends) الأنواع في TypeScript، مثل الواجهات؟
مرحباً بالجميع! لقد بدأت للتو في تعلم TypeScript وواجهت سوء فهم. أعلم أنه يمكن تمديد الواجهات باستخدام `extends`. على سبيل المثال:
```typescript
interface User {
name: string;
}
interface AdminUser extends User {
role: string;
}
```
هذا يعمل بشكل رائع. ولكن عندما أحاول فعل الشيء نفسه مع الأنواع (type alias)، لا ينجح الأمر:
```typescript
type User = {
name: string;
};
type AdminUser extends User { // ❌ خطأ: 'extends' لا يعمل مع الأنواع
role: string;
}
```
لقد جربت خيارات مختلفة، لكن TypeScript يشتكي. على الإنترنت يكتبون أنه يمكن تمديد الأنواع باستخدام التقاطعات (&)، لكنني لا أفهم تماماً كيفية القيام بذلك بشكل صحيح وما الفرق بين الواجهات والأنواع في سياق التمديد.
أرجو توضيح كيفية تمديد الأنواع بشكل صحيح؟ هل يمكن فعل ذلك أصلاً؟ وإذا كان الأمر كذلك، فمتى يُفضل استخدام `extends` للواجهات ومتى يُفضل استخدام التقاطعات للأنواع؟
شكراً مسبقاً على المساعدة!