الدرس 4 من 10

اشتقاق الأنواع

هدف الدرس

نوع واحد تُشتقّ منه البقية

01

الشرح

عندك نوع User واحد، وتحتاج منه أشكالًا أخرى: تحديثًا جزئيًّا، وبطاقة مختصرة، ومستخدمًا جديدًا لم يأخذ id بعد. ونسخ هذه الأشكال يدويًّا ينفع يومًا واحدًا، ثم يتغيّر User وتبقى النسخ على حالها دون أن يظهر خطأ واحد يدلّك عليها.

أما الأنواع المساعدة (utility types) فتشتقّ الشكل الجديد بدل أن تنسخه: Partial<T> تجعل كل الحقول اختيارية، وPick<T, "a" | "b"> تأخذ حقولًا بعينها، وOmit<T, "a"> تأخذ كل شيء عداها، وRecord<K, V> تبني كائنًا مفاتيحه K وقيمه V.

والنوع المشتقّ يتبع أصله دائمًا، فإذا غيّرت نوع id في User تغيّرت معه كل الأنواع المشتقّة، وظهر في الحال خطأ في كل كود لم يعد يوافقها.

02

المطلوب

اشتقّ الأنواع الأربعة من User: UserPatch وكل حقوله اختيارية، وUserPreview وفيه id وname فقط، وNewUser وفيه كل الحقول عدا id، وRoleCounts وفيه عدد لكل قيمة من قيم User["role"].

الفحوص

5 فحوص
  1. لا توجد أخطاء في الأنواع
  2. النوع UserPatch يقبل أي حقل وحده بنوعه الصحيح
  3. النوع UserPreview فيه id وname فقط
  4. النوع NewUser فيه كل الحقول عدا id
  5. النوع RoleCounts فيه عدد لكل دور دون نقص
main.ts
المخرجاتTypeScript 5.9

نحمّل مترجم TypeScript الآن. يحدث هذا مرّة واحدة فقط، ثم يحفظه متصفّحك.

–/5

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

تجد 5 فحوص في بطاقة «المطلوب».