AzLearn

type و interface

Type Aliases and Interfaces

مفهوم ~18 دقيقة

type و interface — Type Aliases and Interfaces

في TypeScript يمكنك تسمية شكل الكائن باستخدام type أو interface. كلاهما مناسب لوصف object shape في معظم الحالات اليومية. interface User { id: number; name: string } وtype User = { id: number; name: string } سيخدمانك غالباً. الأهم من الجدل بينهما أن تسمي الشكل عندما يتكرر أو يمثل مفهوماً في المجال.

استخدم type عندما تحتاج unions أو تركيبات مثل Result<T>. واستخدم interface عندما تريد عقداً لكائن أو class ويمكن تمديده. في مشاريع كثيرة، يختار الفريق قاعدة موحدة. لا تجعل الاختيار يعطل العمل؛ الثبات أهم.

الفروق الجوهرية

الناحيةtypeinterface
Union typestype Status = "ok" | "err"لا يمكن
توسيع Declaration mergingلا يمكن إعادة فتحهيمكن فتح نفس الـ interface مرة ثانية في ملف آخر (interface Window {...})
التوسع extendstype B = A & { extra: string }interface B extends A { extra: string }
Computed propertiestype K = { [P in Keys]: string }أقل مرونة في mapped types

في الاستخدام اليومي الفرق ضئيل. القاعدة العملية: interface للكائنات في public APIs (لأن declaration merging مفيد أحياناً في مكتبات)، وtype لكل ما عداها خاصة unions وتركيبات الأنواع.

مثال عملي

index.ts

لاحظ أننا استخدمنا interface للكائن وtype للـ union. هذا تقسيم عملي وسهل القراءة.

التسمية تصميم

عندما تسمي نوعاً، أنت تقول إن هذا الشكل مهم في المجال. لا تسم كل كائن مؤقت، لكن لا تكرر نفس الشكل في خمس دوال.

تحدي — Challenge