أنواع التقاطع ('&')
جزء من قسم مقدمة إلى 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
};يكون هذا مفيدًا بشكل خاص عندما تريد إنشاء أنواع معقدة من أجزاء أصغر قابلة لإعادة الاستخدام. وبدلًا من تعريف نوع كائن كبير واحد، يمكنك إنشاء أنواع مركّزة لمجالات محددة، ثم دمجها حسب الحاجة.
تضمن أنواع التقاطع أن النوع الناتج يستوفي جميع متطلبات الأنواع المتقاطعة. يجب أن يحتوي المتغير على كل خاصية من كل نوع في التقاطع؛ فلا مجال للاختيار والانتقاء كما هو الحال مع الاتحادات.
التحدي
سهلأنشئ اسمَي نوع: 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
// استدعِ الدوال واطبع النتائجيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس مقدمة إلى TypeScript
1البداية مع TS
ما هي TypeScript؟لماذا نستخدم TypeScript؟أول كود TypeScript لكعملية الـ Compilation والأخطاءملخص: مقدمة في TS4التعامل مع الدوال
تحديد أنواع المعاملات وقيم الإرجاعتحديد أنواع Arrow Functionsنوع الإرجاع 'void'المعاملات الاختيارية باستخدام '?'القيم الافتراضية للمعاملاتتحديد أنواع Rest Parametersتعريف أنواع الدوالملخص: بناء دوال محددة الأنواع2الأنواع الأساسية
الأنواع الأساسية: str, num, booleanالنوع 'any': مخرج الهروبالنوع 'unknown'التعامل مع 'null' و 'undef'استنتاج الأنواع في التطبيق العمليتوضيحات الأنواع الصريحةمراجعة: تدريب على الأنواع الأساسية5الأنواع: الأسماء المستعارة، الاتحادات والتقاطعات
الأسماء المستعارة للأنواع الأساسية (Primitives)أنواع الاتحاد ('|')التعامل مع أنواع الاتحادالأنواع الحرفية (Literal Types)أنواع التقاطع ('&')دمج الأسماء المستعارة للأنواعملخص: تركيبات الأنواع المتقدمة3هياكل البيانات: المصفوفات و Tuple
المصفوفات محددة النوع (Typed Arrays)معدل 'readonly' للمصفوفاتما هو الـ Tuple؟تعريف والوصول إلى الـ Tuplesتفكيك الـ Tuples (Destructuring)الـ Tuples للقراءة فقط (Readonly)المصفوفات محددة النوع متعددة الأبعاداستخدام Spread Operator مع المصفوفاتملخص: المصفوفات و Tuples6تحديد أنواع الكائنات والواجهات
توصيف أنواع الكائنات المضمنة (Inline)الأسماء المستعارة للأنواع (Type Aliases) للكائناتمقدمة عن الواجهات (Interfaces)الواجهات (Interfaces) مقابل الأسماء المستعارة للأنواع (Type Aliases)الخصائص الاختيارية وخصائص القراءة فقط (Readonly)توسيع الواجهات والأنواعإضافة الدوال (Methods) إلى الواجهاتملخص: تحديد هياكل الكائناتتدرّب بنفسك: Playground لـ TypeScript