Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

واجهات الـ Generic

جزء من قسم Introduction To TypeScript في رحلة JavaScript على Coddy — الدرس 61 من 73.

تماماً كما يمكنك إنشاء دوال عامة (generic functions)، يمكنك أيضاً إنشاء واجهات عامة (generic interfaces). يتيح لك ذلك تحديد شكل الكائن مع الحفاظ على مرونة أنواع خصائص معينة وقابليتها لإعادة الاستخدام.

إليك كيفية إنشاء واجهة عامة (generic interface) باستخدام نفس صيغة معلمات النوع (type parameter syntax):

interface Container {
  value: T;
  isEmpty: boolean;
}

يؤدي <T> الموجود بعد اسم الواجهة إلى إنشاء معلمة نوع (type parameter) يمكن استخدامها في جميع أنحاء تعريف الواجهة. في هذا المثال، ستكون لخاصية value أي نوع تحدده عند استخدام الواجهة، بينما يظل isEmpty نوعاً ثابتاً من نوع boolean.

عندما تستخدم واجهة عامة (generic interface)، فإنك تحدد النوع الملموس (concrete type) داخل أقواس زاوية:

const stringContainer: Container = {
  value: "hello",
  isEmpty: false
};

const numberContainer: Container = {
  value: 42,
  isEmpty: false
};
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

challenge icon

التحدي

سهل

أنشئ واجهة عامة (generic interface) باسم Result يمكنها الاحتفاظ ببيانات من أي نوع بالإضافة إلى معلومات النجاح.

يجب أن تحتوي الواجهة على خاصيتين:

  • success من نوع boolean
  • data من نوع T (معامل النوع العام)

أنشئ الكائنات التالية باستخدام الواجهة العامة الخاصة بك:

  • stringResult من نوع Result<string> مع success: true و data: "Operation completed"
  • numberResult من نوع Result<number> مع success: true و data: 42
  • booleanResult من نوع Result<boolean> مع success: false و data: false
  • arrayResult من نوع Result<string[]> مع success: true و data: ["item1", "item2", "item3"]

أنشئ دالة عامة باسم processResult تقوم بما يلي:

  • تستخدم معامل نوع عام T
  • تأخذ معاملًا واحدًا result من نوع Result<T>
  • تعيد رسالة نصية (string)
  • إذا كانت success هي true، تعيد "Success: [data]"
  • إذا كانت success هي false، تعيد "Failed: [data]"

اطبع المخرجات التالية:

  • اطبع نتيجة استدعاء processResult مع stringResult
  • اطبع نتيجة استدعاء processResult مع numberResult
  • اطبع نتيجة استدعاء processResult مع booleanResult
  • اطبع نتيجة استدعاء processResult مع arrayResult
  • اطبع stringResult.data

ورقة مرجعية

تسمح لك الواجهات العامة (Generic interfaces) بتحديد شكل الكائن مع الحفاظ على مرونة أنواع معينة من الخصائص وقابليتها لإعادة الاستخدام.

قم بإنشاء واجهة عامة باستخدام صيغة معلمات النوع (type parameter syntax):

interface Container<T> {
  value: T;
  isEmpty: boolean;
}

الرمز <T> بعد اسم الواجهة ينشئ معلمة نوع يمكن استخدامها في جميع أنحاء تعريف الواجهة.

استخدم واجهة عامة عن طريق تحديد النوع الفعلي داخل أقواس زاوية:

const stringContainer: Container<string> = {
  value: "hello",
  isEmpty: false
};

const numberContainer: Container<number> = {
  value: 42,
  isEmpty: false
};

جرّب بنفسك

// TODO: اكتب كودك هنا

// إنشاء واجهة Result العامة (generic)


// إنشاء الكائنات باستخدام واجهة Result


// إنشاء دالة processResult العامة (generic)


// طباعة المخرجات المطلوبة
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Introduction To TypeScript