[key: string]: T توقيعات الفهرسة

آخر تحديث: 2026-10-22

[key: string]: T توقيعات الفهرسة

تصف توقيعات الفهرسة الكائنات التي تكون أسماء مفاتيحها غير ثابتة لكن نوع قيمها موحّد، مثل القواميس والعدادات وخرائط الإعدادات. وتُكتب [key: string]: T.

المجموعةتركيب الأنواع
النوعبناء الجملة
الوضع الصارمغير مطلوب

ℹ️ معلومة يحوّل المحرر لغة TypeScript إلى JavaScript ثم يشغّلها (بدون فحص أنواع)؛ راجع ناتج كل مثال لنتيجة فحص الأنواع.

📝 الصيغة

const dict: { [key: string]: number } = {};
dict["a"] = 1;
// صيغة مكافئة عبر النوع المساعد
const same: Record<string, number> = {};

⚙️ المعاملات

[key: string]نوع المفتاح لا يكون إلا string أو number أو symbol أو اتحادًا منها؛ واسم key حر الاختيار
[i: number]التعبير [i: number]: T يصف البنية المفهرسة بالأدلة؛ ويجب أن يكون نوع قيمة الفهرس الرقمي نوعًا جزئيًا من نوع قيمة الفهرس النصي

القيمة المُعادة:لا قيمة مُعادة — توقيعات الفهرسة مفهوم خاص بطبقة الأنواع فقط ولا تُنتج أي كود في وقت التشغيل.

▶ مثال

عدّل الكود أدناه واضغط «جرّب» لرؤية نتيجة التحويل:

الناتج:

180 0

(مخرجات التشغيل بعد التحويل؛ نوع scores["Bob"] هو number دون خطأ في وضع strict — فتوقيعات الفهرسة تعلن أن "كل المفاتيح موجودة")

💡 نقاط مهمة

ℹ️ معلومة المعنى نفسه في Record<string, number> والتوقيع { [key: string]: number }، وصيغة نوع الأداة أكثر شيوعًا.
⚠️ تنبيه تجعل توقيعات الفهرسة "أي مفتاح" قانونيًا: فـ scores["Bob"] لا يخطئ حتى في وضع strict، فيفلت الخطأ الإملائي. وإذا كانت مجموعة المفاتيح محدودة فاستخدم Record<"a" | "b", T> أو الأنواع المخطَّطة.
💡 تلميح عند اختلف نوع القيم اكتبه اتحادًا: { [key: string]: string | number }، ثم ضيّق النوع بعد القراءة.
المزيد من الحالات قادم قريبًا.

📚 دروس ذات صلة

❓ أسئلة شائعة

س ما علاقة توقيع الفهرسة بـ Record<K, V>؟
ج تكافؤهما في القوة — Record هو توقيع فهرسة منفَّذ عبر الأنواع المخطَّطة. صيغة Record أكثر إيجازًا في الاستخدام اليومي، ويمكنها كذلك تحديد مجموعة المفاتيح بدقة إلى اتحاد حرفي.
س لماذا لا يخطئ الوصول إلى مفتاح غير موجود؟
ج لأن دلالة توقيع الفهرسة تقول: "كل مفاتيح string موجودة ونوعها T". ولأن المترجم يرصد الخطأ الإملائي، حدِّد المفاتيح بـ Record<"a" | "b", T> أو فعِّل noUncheckedIndexedAccess.
س هل يمكن تعايش الفهرس الرقمي والفهرس النصي؟
ج نعم، لكن يجب أن يكون نوع قيمة الفهرس الرقمي نوعًا جزئيًا من نوع قيمة الفهرس النصي (فمفاتيح الأعداد في JS تتحول في الحقيقة إلى مفاتيح نصية).
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%