TypeScript Academy · درس

أنواع الاتحاد: A أو B

استخدموا | للسماح باحتمالات متعددة للنوع

الدرس 1 من 413 خطوة

أنواع الاتحاد: A أو B درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

مرحبًا

تتيح أنواع الاتحاد أن تكون القيمة من أحد عدة أنواع. وتُكتب باستخدام المعامل `|`، وهي أساسية لنمذجة البيانات الواقعية.

الصياغة الأساسية للاتحاد

اجمع نوعين أو أكثر باستخدام `|`. يمكن لمتغير من نوع اتحاد أن يحتوي على أي نوع واحد من الأنواع المدرجة.
let id: string | number;
id = 'abc123'; // OK
id = 42;       // OK
// id = true;  // Error

الاتحاد في معاملات الدوال

اسمح بتمرير أنواع متعددة من المدخلات إلى دالة باستخدام نوع معامل اتحادي.
function format(val: string | number): string {
  return typeof val === 'string' ? val.toUpperCase() : val.toFixed(2);
}

يلزم التضييق لأعضاء الاتحاد

لا يمكنك استدعاء سوى الأساليب المشتركة بين جميع أعضاء الاتحاد من دون تضييق. أما الأساليب الخاصة بنوع معين، فيجب عليك التضييق أولًا.
function process(val: string | number) {
  // val.toFixed(2); // Error — not on string
  if (typeof val === 'number') {
    val.toFixed(2); // OK
  }
}

الاتحاد مع الأنواع الحرفية

تنشئ الأنواع الاتحادية للقيم الحرفية مجموعة شبيهة بالتعداد من قيم السلاسل النصية أو الأرقام المسموح بها.
type Direction = 'north' | 'south' | 'east' | 'west';
type StatusCode = 200 | 201 | 400 | 404 | 500;

الاتحاد للأنواع القابلة للقيمة الفارغة

أكثر أنواع الاتحاد شيوعًا هو `T | null` أو `T | undefined` لتمثيل القيم الاختيارية عند تفعيل strictNullChecks.
function getUser(id: number): User | null {
  return db.find(u => u.id === id) ?? null;
}

اتحاد أنواع الكائنات

يمكن للأنواع الاتحادية دمج أنواع الكائنات. لا يسمح TypeScript بالوصول إلى الخصائص المشتركة بين جميع الأعضاء من دون تضييق.
type Cat = { kind: 'cat'; meow(): void };
type Dog = { kind: 'dog'; bark(): void };
type Pet = Cat | Dog;
function speak(pet: Pet) {
  if (pet.kind === 'cat') pet.meow();
  else pet.bark();
}

ثلاثة أنواع أو أكثر في اتحاد

يمكن أن تتضمن الأنواع الاتحادية أي عدد تحتاج إليه من الأنواع.
type Input = string | number | boolean | null;

الاتحاد في أنواع القيمة المرجعة

يمكن للدوال إرجاع أنواع مختلفة وفقًا لمنطقها. عبّر عن ذلك باستخدام نوع قيمة مرجعة اتحادي.
function divide(a: number, b: number): number | null {
  if (b === 0) return null;
  return a / b;
}

الاتحادات المميّزة

أضف خاصية حرفية مشتركة، تُسمى الخاصية المميّزة، إلى أعضاء الاتحاد. يستخدم TypeScript هذه الخاصية لتضييق النوع تلقائيًا.
type Square = { kind: 'square'; side: number };
type Circle = { kind: 'circle'; radius: number };
type Shape = Square | Circle;

الخصائص المشتركة من دون تضييق

إذا اشترك جميع أعضاء الاتحاد في خاصية، فيمكنك الوصول إليها من دون تضييق.
type A = { name: string; x: number };
type B = { name: string; y: number };
type AB = A | B;
function getName(obj: AB): string {
  return obj.name; // OK — name is on both
}

تحقق سريع

ما الصياغة التي تنشئ نوع اتحاد يمكن أن يكون سلسلة نصية أو رقمًا؟

مراجعة

تسمح الأنواع الاتحادية (`|`) للقيم بأن تكون من أنواع متعددة. ضيّق الاتحادات قبل استخدام العمليات الخاصة بنوع معين. تقيّد الأنواع الاتحادية الحرفية القيم بمجموعة محدودة. وتضيف الاتحادات المميّزة وسمًا مشتركًا لتسهيل التضييق.
البدء مجانًا

تعلم TypeScript مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
101
الدروس
352

الأسئلة الشائعة

هل درس «أنواع الاتحاد: A أو B» مجاني؟

نعم — نص درس «أنواع الاتحاد: A أو B» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «أنواع الاتحاد: A أو B»؟

استخدموا | للسماح باحتمالات متعددة للنوع تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «أنواع الاتحاد: A أو B»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أنواع الاتحاد: A أو B
  2. أنواع التقاطع: A وB
  3. اتحادات الأنواع المميّزة لمطابقة الأنماط بأمان
  4. أنماط عملية باستخدام الاتحاد والتقاطع
← العودة إلى TypeScript Academy