`${T}` أنواع القوالب النصية
آخر تحديث: 2026-10-22
`${T}` أنواع القوالب النصية
تجري أنواع القوالب النصية سَلسَلة السلاسل على مستوى الأنواع: فالتعبير `${A}-${B}` يعدّد كل تركيبات حوادث A و B. وهو مناسب لاصطلاحات السلاسل "بادئة + لاحقة" مثل أسماء الأحداث والمسارات وأسماء فئات CSS.
| المجموعة | تركيب الأنواع |
|---|---|
| النوع | نوع |
| الوضع الصارم | غير مطلوب |
ℹ️ معلومة يحوّل المحرر لغة TypeScript إلى JavaScript ثم يشغّلها (بدون فحص أنواع)؛ راجع ناتج كل مثال لنتيجة فحص الأنواع.
📝 الصيغة
type Lang = "zh" | "en";
type Page = "home" | "about";
type Route = `/${Lang}/${Page}`; // اتحاد من 4 تركيبات
⚙️ المعاملات
| `${T}` | توضع اتحادات الأنواع الحرفية داخل العناصر البديلة ${}؛ وتتوسع أعضاء الاتحاد إلى حاصل ديكارتي |
|---|---|
| Uppercase/Lowercase | أنواع أدوات تحويل المحارف المدمجة، وهي تشترك مع القوالب النصية في الآلية نفسها |
القيمة المُعادة:اتحاد مكون من كل التركيبات النصية — منتج خاص بزمن الترجمة وحده ولا وجود له في وقت التشغيل.
▶ مثال
عدّل الكود أدناه واضغط «جرّب» لرؤية نتيجة التحويل:
الناتج:
user:created | order:deleted
(مخرجات التشغيل بعد التحويل؛ وضع "user:updated" في المصفوفة يؤدي إلى خطأ ترجمة — فهو ليس من ضمن التركيبات الأربع)
💡 نقاط مهمة
ℹ️ معلومة يجب أن تكون العناصر البديلة أنواعًا حرفية (يصح string | number أيضًا، لكن توسع الاتحاد لا يحدث إلا على الاتحادات الحرفية)؛ وعدد التركيبات هو حاصل ضرب أحجام الاتحادات.
💡 تلميح بالمزج مع infer في الأنواع الشرطية يمكن "استخراج" مقاطع من النوع النصي: type OnEvent<T> = T extends `on${infer E}` ? E : never.
⚠️ تنبيه كثرة أعضاء الاتحاد تُفجّر عدد التركيبات (10×10 تعني 100 فرع) وتُبطئ الترجمة؛ فحدِّد حجم الاتحادات أو استبدل بها string.
🏷️ تركيب الأنواع ذو صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريبًا.
📚 دروس ذات صلة
❓ أسئلة شائعة
س هل توجد أنواع القوالب النصية في وقت التشغيل؟
ج لا توجد. فهي عملية أنواع في زمن الترجمة فقط تختفي بعد التحويل؛ ولا يبقى في وقت التشغيل إلا قيم السلاسل النصية العادية.
س كيف أستخرج جزءًا من نوع سلسلة نصية؟
ج بأنواع شرطية مع infer: type Event<T> = T extends `on${infer Name}` ? Name : never يحوّل onCreated إلى created. راجع مدخل infer-keyword.
س هل الأنواع المدمجة مثل Uppercase<T> من أنواع القوالب النصية؟
ج نعم، فأنواع Uppercase/Lowercase/Capitalize/Uncapitalize تحوّل المحارف بالآلية نفسها ويمكن تركيبها بحرية مع أنواع القوالب النصية المخصصة.