الدرس 2 من 10

قيود العموميات

هدف الدرس

اشترط ما تحتاجه فقط

01

الشرح

مُعامل النوع بلا قيد يقبل أي نوع، ولذلك لا يسمح لك بشيء تقريبًا: داخل findById<T> يصير item.id خطأ أنواع، لأن T قد يكون رقمًا أو نصًّا لا id له.

القيد يضيّق ما يُقبل: function longest<T extends { length: number }>(a: T, b: T): T تقبل النصوص والمصفوفات وكل ما له length، وترفض الأرقام. وداخلها صار a.length مسموحًا.

والفخّ أن تتخلّى عن العمومية: items: { id: number }[] يقبل الكتب، لكن ناتجه { id: number } فقط، فيصير book.title خطأ. القيد يشترط id ويحفظ بقية الحقول.

02

المطلوب

قيّد T في findById بحيث يُشترط في كل عنصر id رقمي، ويبقى الناتج T | undefined بكل حقوله.

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

5 معايير
  1. لا أخطاء أنواع
  2. تجد العنصر بمعرّفه
  3. وتُرجع undefined إن لم تجده
  4. الناتج يحتفظ بكل حقول العنصر
  5. العنصر بلا id مرفوض
main.ts
المخرجاتTypeScript 5.9

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

–/5

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

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