الدرس 3 من 10
keyof والوصول المفهرس
- 13 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
مفتاح موجود وقيمة بنوعها
الشرح
إن كان type User = { id: number; email: string } فإن keyof User هو الاتحاد الحرفي "id" | "email". والوصول المفهرس يسير في الاتجاه المعاكس: User["email"] هو string.
اجمعهما في عمومية: function getProp<T, K extends keyof T>(obj: T, key: K): T[K]. المفتاح غير الموجود يصير خطأ ترجمة، والناتج يأخذ نوع الحقل الذي طلبته بالضبط.
والفخّ أن تكتب key: keyof T وناتجًا T[keyof T]: هذا اتحاد كل القيم، فيصير البريد string | number. المُعامل الثاني K هو الذي يتذكّر أيّ مفتاح مرّرت.
المطلوب
أعد كتابة getProp بلا any: ترفض المفتاح غير الموجود في الكائن، ويكون ناتجها نوع الحقل المطلوب.
معايير التصحيح
5 معايير- لا أخطاء أنواع
- تُرجع قيمة الحقل
- الناتج بنوع الحقل المطلوب بالضبط
- المفتاح غير الموجود خطأ ترجمة
- والحقل الرقمي لا يُسنَد إلى نصّ