Menu
CoddyTech
flag Ar iconالعربيةdown icon

أنواع التقاطع ('&')

جزء من قسم مقدمة إلى TypeScript في رحلة JavaScript على Coddy. الدرس 34 من 73.

بينما تتيح لك أنواع union إنشاء variables يمكن أن تكون من عدة types، تعمل أنواع intersection types في الاتجاه المعاكس. فهي تجمع عدة types في نوع واحد يمتلك كل properties الخاصة بـtypes المجمّعة.

تستخدم intersection types عامل علامة العطف (&) لدمج types معًا. عند إجراء intersection بين نوعي كائن، تحتوي النتيجة على كل property من كلا النوعين:

type HasName = { name: string };
type HasAge = { age: number };

type Person = HasName & HasAge;

// Person الآن لديه كلاً من خصائص name و age
let user: Person = {
  name: "Alice",
  age: 30
};

يكون هذا مفيدًا بشكل خاص عندما تريد إنشاء أنواع معقدة من أجزاء أصغر قابلة لإعادة الاستخدام. وبدلًا من تعريف نوع كائن كبير واحد، يمكنك إنشاء أنواع مركّزة لمجالات محددة، ثم دمجها حسب الحاجة.

تضمن أنواع التقاطع أن النوع الناتج يستوفي جميع متطلبات الأنواع المتقاطعة. يجب أن يحتوي المتغير على كل خاصية من كل نوع في التقاطع؛ فلا مجال للاختيار والانتقاء كما هو الحال مع الاتحادات.

challenge icon

التحدي

سهل

أنشئ اسمَي نوع: HasName لكائن يحتوي على الخاصية name من النوع string، وHasAge لكائن يحتوي على الخاصية age من النوع number.

أنشئ اسم نوع ثالثًا يُسمّى Person من خلال تقاطع HasName وHasAge باستخدام العامل &.

أنشئ اسم نوع آخر يُسمّى HasEmail لكائن يحتوي على الخاصية email من النوع string.

أنشئ اسم نوع رابعًا يُسمّى Employee من خلال تقاطع الأنواع الثلاثة: HasName وHasAge وHasEmail.

أنشئ الآن المتغيرات التالية:

  • أنشئ متغيرًا باسم user من النوع Person، تكون قيمته name هي "Alice" وعمره 25
  • أنشئ متغيرًا باسم worker من النوع Employee، تكون قيمته name هي "Bob"، وعمره 30، وبريده الإلكتروني "bob@company.com"

أنشئ دالة باسم displayPerson تقبل معاملًا من النوع Person وتُرجع سلسلة نصية بالتنسيق "Name: [name], Age: [age]".

أنشئ دالة أخرى باسم displayEmployee تقبل معاملًا من النوع Employee وتُرجع سلسلة نصية بالتنسيق "Name: [name], Age: [age], Email: [email]".

استدعِ الدالتين باستخدام المتغيرات المناسبة واطبع النتائج في سطرين منفصلين.

جرّب بنفسك

// TODO: اكتب كودك هنا
// أنشئ أسماء مستعارة للأنواع لـ HasName و HasAge و HasEmail
// أنشئ نوعي Person و Employee باستخدام التقاطع
// أنشئ المتغيرين user و worker
// أنشئ دالتي displayPerson و displayEmployee
// استدعِ الدوال واطبع النتائج
quiz iconاختبر نفسك

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

جميع دروس مقدمة إلى TypeScript

تدرّب بنفسك: Playground لـ TypeScript