NahdaAIنهضة
TypeScript • المستوى الثاني • الدرس 3

أنواع التقاطع والتجميع (Intersection & Tuples)

العودة لفهرس المستوى

أهداف الدرس العلمية

  • دمج عدة أنواع باستخدام الرمز & لبناء كائنات مركبة (Intersection Types).
  • استخدام Tuples لتحديد عدد وترتيب ونوع عناصر المصفوفة بدقة بدلاً من المصفوفات العادية.
  • التعامل مع الاستجابات الثنائية والمركبة (مثل رموز حالة HTTP أو الإحداثيات).
  • تجنب أخطاء ترتيب البيانات في المصفوفات غير الصريحة.

1. ما هي Intersection Types؟

تتيح لك الـ Intersection Types (&) دمج خصائص واجهتين أو أكثر بداخل نوع واحد. الكائن الناتج يجب أن يحتوي على جميع الخصائص المطلوبة من كافة الأنواع التي تم دمجها.

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

// الكائن الشخصي يحب أن يجمع الاسم والعمر معاً
type PersonProfile = HasName & HasAge;

const user: PersonProfile = {
  name: "علي",
  age: 30
};

2. ما هي الـ Tuples؟

📦 مصفوفات ثابته الترتيب

الـ Tuple هو نوع خاص من المصفوفات يكون فيه عدد العناصر محدداً، وكل عنصر في موقع معين (Index) له نوع بيانات صريح وخاص به.

📍 استخدام شائع

تُستخدم الـ Tuples بكثرة للقيم المزدوجة مثل الإحداثيات [lat, lng]، مخرجات React Hooks مثل [value, setValue]، أو استجابات السيرفر [code, message].

التطبيق العملي المباشر

تحدي الدرس الثالث: تعديل قيمة Tuple ودمج نوع إضافي

قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق ما يلي:

  1. قم بتعديل قيم responseTuple ليصبح رمز الاستجابة 404 والرسالة النصية "Not Found".
  2. أنشئ نوعاً جديداً باسم AdminPermissions يحتوي على: role: string و accessLevel: number.
  3. قم بتوسيع الـ Intersection ليشمل Person & Employee & AdminPermissions مع تحديث كائن staff بالخصائص الجديدة.
  4. اطبع تفاصيل staff و responseTuple بالكونسول واضغط "تشغيل الكود".
⏳ جارٍ تحميل المحرر التفاعلي...