الدرس 5 من 10
أسماء الأنواع
- 12 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
سمِّ أي نوع وركّبه
الشرح
type يعطي اسمًا لأي نوع: كائن، أو اتحاد، أو نوع أوّلي. type ID = string | number ممكن، أما interface فلا يصف إلا أشكال الكائنات.
والعلامة & تصنع تقاطعًا: A & B يصف قيمة فيها حقول A وحقول B معًا. تبني به النوع الكبير من قطع صغيرة معرّفة مرّة واحدة، بدل أن تنسخ الحقول فتتباعد النسخ مع الوقت.
والقاعدة العملية: interface لأشكال الكائنات، وtype لما سواها وللتركيب. وانتبه: تقاطع حقلين متعارضين مثل { id: string } & { id: number } لا يُرفض عند التعريف، بل يصير id من نوع never فلا يمكن إنشاء قيمة من هذا النوع أصلًا.
المطلوب
عرّف type ID يقبل نصًّا أو رقمًا واجعله نوع id في Article. ثم عرّف StoredArticle تقاطعًا بين Article وTimestamps، وصِف به المُعامل الأوّل لـ touch وناتجها، والثاني بـ number.
معايير التصحيح
6 معايير- لا أخطاء أنواع
- ID يقبل نصًّا ورقمًا
- ولا يقبل غيرهما
- StoredArticle يجمع الحقول الأربعة بمعرّف رقمي
- touch ترفض مقالًا بلا توقيت
- touch تغيّر updatedAt وحده