TypeScript Academy · درس

الشمولية باستخدام never (مقدمة)

استخدم never لفرض شمولية عبارات switch على اتحادات الأنواع واكتشاف الحالات المفقودة مبكرًا.

الدرس 3 من 38 خطوة

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

مقدمة

الهدف: ضمان أن تعالج عبارة switch جميع أعضاء union. ويساعد النوع never المترجم على تنبيهكم عند فقدان حالة جديدة.

إعداد Union

أنشئوا discriminated union باستخدام وسم literal، مثل kind، لاستخدامه لاحقًا مع switch.

type Circle = { kind: "circle"; radius: number };
type Square = { kind: "square"; size: number };

type Shape = Circle | Square;

Switch غير شامل

قد يُترجم الفرع المفقود دون خطأ، لكن المنطق يظل غير مكتمل. نحتاج إلى طريقة تفرض فشلًا أثناء الترجمة عند فقدان إحدى الحالات.

function areaBad(s: Shape): number {
  switch (s.kind) {
    case "circle":
      return Math.PI * s.radius ** 2;
    // OOPS: forgot "square" -> no compile error yet
  }
  return 0; // silently wrong
}

console.log(areaBad({ kind: "circle", radius: 2 }));

المساعد assertNever

عرّفوا assertNever؛ فهو يقبل never فقط. فإذا وصلت قيمة إليه، فهذا يعني أن switch لم يكن شاملًا، وسينبّه المترجم إلى ذلك.

function assertNever(x: never): never {
  throw new Error("Unhandled case: " + JSON.stringify(x));
}

Switch شامل

أضيفوا default يستدعي assertNever. وعند ظهور عضو جديد في union، سيجبركم المترجم على معالجته.

function area(s: Shape): number {
  switch (s.kind) {
    case "circle":
      return Math.PI * s.radius ** 2;
    case "square":
      return s.size * s.size;
    default:
      return assertNever(s); // compiler error if a member is unhandled
  }
}

console.log(area({ kind: "square", size: 3 }));

إرشادات

إرشادات:

  • استخدموا discriminant، مثل kind، مع أعضاء union.
  • حافظوا على نمط default + assertNever.
  • فضّلوا أنواع إرجاع واضحة حتى تظهر الحالات المفقودة بجلاء.

تحقق من الشمول

تحقق سريع: كيف تجعلون switch على discriminated union شاملًا؟

مراجعة

مراجعة: يشير never إلى قيمة مستحيلة. استخدموا assertNever في الفرع الافتراضي لفرض إنشاء عبارات switch كاملة ومهيأة للتوسعات المستقبلية.

البدء مجانًا

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

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

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

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

هل درس «الشمولية باستخدام never (مقدمة)» مجاني؟

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

ماذا ستتعلم في «الشمولية باستخدام never (مقدمة)»؟

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

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

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

كم من الوقت يستغرق درس «الشمولية باستخدام never (مقدمة)»؟

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

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

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

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

  1. typeof والمساواة وتضييق النطاق بالاعتماد على الحقيقة
  2. in و instanceof واتحادات الأنواع المميّزة
  3. الشمولية باستخدام never (مقدمة)
← العودة إلى TypeScript Academy