الأسماء البديلة (Type Aliases)
نعطي اسمًا لأي نوع لإعادة استخدامه:
type ID = string | number;
type Point = { x: number; y: number };
let userId: ID = 101;
let center: Point = { x: 0, y: 0 };
الواجهات (Interfaces)
طريقة لوصف شكل الكائنات تحديدًا:
interface User {
name: string;
age: number;
email?: string;
}
const u: User = { name: "سامي", age: 30 };
التوسعة (extends)
الواجهات تُوسَّع بـ extends:
interface Animal {
name: string;
}
interface Dog extends Animal {
breed: string;
}
const d: Dog = { name: "ريكس", breed: "هاسكي" };
ومع type نستخدم التقاطع &:
type Animal = { name: string };
type Dog = Animal & { breed: string };
type أم interface؟
| المعيار | type | interface |
|---|---|---|
| وصف شكل كائن | ✅ | ✅ (مفضّلة) |
| اتحادات / حرفية / دوال | ✅ | ❌ |
| التوسعة | & | extends |
| الدمج التلقائي | ❌ | ✅ |
القاعدة العملية: استخدم interface لشكل الكائنات والكائنات القابلة
للتوسعة، وtype للاتحادات والأنواع الحرفية والأنواع المركّبة.
// interface لشكل كائن
interface Product { name: string; price: number }
// type لاتحاد
type Result = "success" | "error";
أخطاء شائعة
- محاولة عمل اتحاد
A | Bبـinterface— غير ممكن، استخدمtype. - القلق المفرط بشأن الاختيار — كلاهما يعمل لأغلب الحالات.
🎯 التالي: التحويل بين الأنواع (Casting).