interface الواجهات (مع الوراثة ودمج الإعلانات)

آخر تحديث: 2026-10-22

interface الواجهات (مع الوراثة ودمج الإعلانات)

تسمّي interface بنية كائن باسم واحد: تحدد الخصائص والدوال الموجودة وأنواع كل منها. وهي توجد في زمن الترجمة وحده (تختفي كليًا بعد التحويل)، وتدعم الوراثة عبر extends ودمج الإعلانات بالاسم نفسه، فهي ثاني طرق تعريف الأنواع إلى جوار الأسماء البديلة type.

المجموعةتركيب الأنواع
النوعبناء الجملة
الوضع الصارمغير مطلوب

ℹ️ معلومة يحوّل المحرر لغة TypeScript إلى JavaScript ثم يشغّلها (بدون فحص أنواع)؛ راجع ناتج كل مثال لنتيجة فحص الأنواع.

📝 الصيغة

interface Animal {
  name: string;
  speak(): void;
}

// الوراثة
interface Pet extends Animal {
  owner: string;
}

// دمج التصريحات: الواجهات ذات الاسم نفسه تدمج الأعضاء تلقائيًا
interface Window { title: string }
interface Window { version: number }

⚙️ المعاملات

extendsوراثة واجهة أو أكثر للحصول على كل أعضائها
?:علامة الخاصية الاختيارية؛ يجوز أن تكون الخاصية غائبة
readonlyمُعدِّل القراءة فقط؛ لا يمكن إسناد قيمة جديدة للخاصية بعد إسنادها

القيمة المُعادة:لا قيمة مُعادة — interface مفهوم خاص بطبقة الأنواع فقط ولا يُنتج أي كود في وقت التشغيل.

▶ مثال

عدّل الكود أدناه واضغط «جرّب» لرؤية نتيجة التحويل:

الناتج:

Tom Jerry
Meow

(مخرجات التشغيل بعد التحويل؛ فحص الأنواع تقوم به tsc — جعل name عددًا يُنتج error TS2322)

💡 نقاط مهمة

ℹ️ معلومة تختفي interface كليًا بعد التحويل بلا أي كلفة في وقت التشغيل؛ فهي مجرد "مخطط بنيوي" يقرؤه المترجم وحده.
💡 تلميح تندمج الواجهات ذات الاسم نفسه تلقائيًا (دمج الإعلانات)، وهي الأسلوب المعياري لتوسيع أنواع المكتبات الخارجية (كإضافة حقول مخصصة إلى window مثلًا).
⚠️ تنبيه يمكن تبادل interface والأسماء البديلة type في معظم السيناريوهات؛ أما عمليات الأنواع كالاتحاد والمخطَّطة والشرطية فلا تُنجز إلا بـ type، ودمج الإعلانات لا يُنجز إلا بـ interface (تضم الدرسان 9 و11 جدول المقارنة الكامل).
المزيد من الحالات قادم قريبًا.

📚 دروس ذات صلة

❓ أسئلة شائعة

س ما الفرق بين interface و type؟
ج كلاهما يعرّف بنية الكائن ويمكن تبادلهما في الاستخدام اليومي. تدعم interface الوراثة عبر extends ودمج الإعلانات؛ بينما يمكن لـ type التعبير عن الاتحادات والصفوف والأنواع المخطَّطة والشرطية وغيرها من عمليات الأنواع. يكفي أن يتفق الفريق على أحدهما، مع كبت الخلط بينهما.
س هل يمكن لـ interface وصف الدوال أو المصفوفات أو الفئات؟
ج نعم: التوقيع القابل للاستدعاء ((x: number): string) يصف الدوال، وتوقيع الفهرسة ([i: number]: T) يصف المصفوفات، والتوقيع البانئ يصف الدوال البانية، وتنفّذ الفئات الواجهات عبر implements.
س ما هو دمج الإعلانات ومتى يكون مفيدًا؟
ج تندمج أعضاء واجهتين بالاسم نفسه تلقائيًا في واحدة. الاستخدام النموذجي: إضافة حقول مخصصة لأنواع مكتبات خارجية مثل window أو Request دون المساس بكود المكتبة.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%