الدرس 6 من 10

فحص الاكتمال

هدف الدرس

الحالة المنسية تكسر البناء

01

الشرح

switch يغطّي اليوم كل حالات الاتحاد. غدًا يضيف زميل حالة جديدة، فيبتلعها default بصمت: لا خطأ ولا تحذير، فقط رسوم صفرية على كل دفعة بالمحفظة.

المترجم يضيّق النوع مع كل case، فإذا غطّيت الحالات كلها لم يبقَ شيء، وصار نوع القيمة في default هو never: النوع الذي لا قيمة له. مرّرها إلى دالة لا تقبل إلا never، فتبقى كل حالة منسية في النوع وتصير خطأ ترجمة.

function assertNever(x: never): never تحرس في الوقتين: في الترجمة لا تقبل إلا ما لم يبقَ منه شيء، وفي التشغيل ترمي إن وصلتها بيانات لم يتوقّعها أحد.

02

المطلوب

اكتب assertNever ترمي خطأ، وضعها في default داخل fee بدل return 0. سيتوقّف البناء — أصلحه بحالة "wallet" رسومها 1% من amount.

معايير التصحيح

6 معايير
  1. لا أخطاء أنواع
  2. رسوم المحفظة 1% من المبلغ
  3. الحالة المجهولة تُرمى لا تُحسب صفرًا
  4. default في fee يمرّ بـ assertNever
  5. switch كامل يُترجَم مع assertNever
  6. ونسيان حالة واحدة يكسر البناء
main.ts
المخرجاتTypeScript 5.9

جارٍ تحميل مترجم TypeScript… مرّة واحدة ثم يحفظه المتصفح.

–/6

يبدأ الفحص حين تجهز البيئة.

6 معايير في بطاقة «المطلوب».