keyof
استخراج اتحاد مفاتيح نوع keyof
keyof معامل نوع يأخذ نوع كائن ويُرجع اتحاد أسماء مفاتيحه كأنواع حرفية.
keyof يعمل في مواضع الأنواع فقط (لا يشبه typeof وقت التشغيل في JavaScript). يفيد كثيرًا مع الدوال العامّة (generics) التي تريد ضمان أن مفتاحًا مُمرَّرًا موجود فعلًا في كائن معيّن.
مع أنواع تحتوي index signature بمفتاح نصّي (`[key: string]`)، ينتج keyof اتحاد `string | number` — لأن مفاتيح الكائنات في JavaScript تُحوَّل دومًا لنصوص، فأي رقم مفتاح صالح أيضًا كنص.
الصياغة
keyof Type
📄 مثال
interface Product {
id: number;
name: string;
price: number;
}
type ProductKey = keyof Product;
// "id" | "name" | "price"
function getField<K extends keyof Product>(product: Product, key: K) {
return product[key];
}أهم النقاط
| العنصر | الوظيفة |
|---|---|
| Type | نوع الكائن المراد استخراج اتحاد مفاتيحه |
💡 نصائح عملية
- ادمجه مع Generics و extends لكتابة دوال آمنة تقبل فقط مفاتيح موجودة فعلًا في كائن معيّن
⚠️ أخطاء شائعة
- الخلط بينه وبين typeof في JavaScript (الذي يفحص نوع قيمة وقت التشغيل) — keyof يعمل في مواضع الأنواع فقط
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار TYPESCRIPT الكامل بالعربي.