اختر البنية المناسبة لنمذجة أنواع كائناتك وتركيبها دون تكرار الشيفرة.
افتح هذا الدرس في Kodokonأنت تعرف بالفعل كيفية التصريح عن أنواع الكائنات. لكن السؤال الحقيقي في أي مشروع هو الاختيار بين type وinterface، ثم تركيب الأنواع الموجودة دون تكرار الشيفرة. لنبدأ بالسيناريو الأكثر شيوعًا: نمذجة كيانات متشابهة في الشكل.
interface User {
id: number;
name: string;
}
interface Admin extends User {
permissions: string[];
}
const admin: Admin = {
id: 1,
name: "Ada",
permissions: ["users:write"],
};تنشئ extends علاقة واضحة: فالـAdmin هو User مزوّد بصلاحيات إضافية. ومع اسم مستعار من نوع type، تحصل على النتيجة نفسها عبر عامل التقاطع &، الذي يدمج عدة أشكال في شكل واحد. إنها الأداة المثالية للاهتمامات العرضية المشتركة، مثل الطوابع الزمنية الموجودة على جميع كياناتك.
type Timestamps = {
createdAt: Date;
updatedAt: Date;
};
type Product = {
id: number;
label: string;
};
type StoredProduct = Product & Timestamps;إذن، أيهما ينبغي أن تختار؟ هناك فرقان مهمان بحق. أولًا، type وحده يستطيع تسمية اتحاد مثل 'active' | 'archived'. ثانيًا، تصريحان بـinterface يحملان الاسم نفسه يندمجان تلقائيًا: مفيد لتعزيز أنواع مكتبةٍ ما، وخطير حين يحدث بالصدفة.
type Status = "active" | "archived";
interface Config {
locale: string;
}
interface Config {
debug: boolean;
}
const config: Config = { locale: "fr", debug: true };