(arg: T) => R تعبيرات أنواع الدوال
آخر تحديث: 2026-10-22
(arg: T) => R تعبيرات أنواع الدوال
تصف تعبيرات أنواع الدوال «شكل فئة من الدوال»: قائمة معاملات + => + نوع إرجاع ((value: string) => string | null). وعند حفظها في اسم type، تحصل السيناريوهات التي تكون فيها «الدالة قيمةً» — مثل الاستدعاءات الراجعة والمتحققات والبرمجيات الوسيطة — على اسم نوع قابل لإعادة الاستخدام.
| المجموعة | الدوال والأصناف |
|---|---|
| النوع | بناء الجملة |
| الوضع الصارم | غير مطلوب |
ℹ️ معلومة يحوّل المحرر لغة TypeScript إلى JavaScript ثم يشغّلها (بدون فحص أنواع)؛ راجع ناتج كل مثال لنتيجة فحص الأنواع.
📝 الصيغة
type Validator = (value: string) => string | null;
type Comparator<T> = (a: T, b: T) => number;
const required: Validator = (v) => (v.length > 0 ? null : "Required");
⚙️ المعاملات
| (value: string) | قائمة المعاملات: الأسماء مجرد توثيق، والمطابقة تتم حسب المواضع |
|---|---|
| => string | null | نوع الإرجاع: يُقرأ السهم => بمعنى «يُعيد»؛ وهنا تعني null اصطلاحًا «لا خطأ» |
القيمة المُعادة:نوع الدالة وصفٌ نوعي خالص لا ينتج كود تشغيل؛ وعند الإسناد إليه يتحقق المترجم من توافق المعاملات وقيمة الإرجاع بندًا بندًا.
▶ مثال
عدّل الكود أدناه واضغط «جرّب» لرؤية نتيجة التحويل:
الناتج:
["هذا الحقل مطلوب","صيغة البريد الإلكتروني غير صحيحة"]
[]
(مخرجات التشغيل بعد التحويل؛ إدخال دالة معاملها ليس string في rules سيعطي خطأ ترجمة)
💡 نقاط مهمة
ℹ️ معلومة أسماء المعاملات في النوع مجرد تلميحات: (v: string) => R و (value: string) => R هما النوع نفسه؛ فالمشارك في المطابقة هو الموضع والنوع.
💡 تلميح كل شكل دالة يتكرر في المشروع (معالجات الأحداث، المُحمِّلات، البرمجيات الوسيطة) يستحق اسم type مستقلًا — فعند تغيير التوقيع تعدّل مكانًا واحدًا فقط.
⚠️ تنبيه عند إرجاع string | null يحصل المستدعي على قيمة «قد تكون null» ويجب فحصها أولًا؛ واجعل اصطلاح «null تعني لا خطأ» موثقًا كاتفاق فريق.
🏷️ الدوال والأصناف ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريبًا.
📚 دروس ذات صلة
❓ أسئلة شائعة
س ما الفرق بين تعبير نوع الدالة والنوع القابل للاستدعاء ذي الخصائص؟
ج (v: string) => R يصف الاستدعاء فقط؛ أما interface { (v: string): R; version: string } فيحمل خصائص إضافية عدا الاستدعاء (كائن قابل للاستدعاء). للاستدعاءات الراجعة العادية يكفي التعبير.
س هل ما زالت معاملات الاستدعاء الراجع بحاجة إلى تعليقات؟
ج لا. في const v: Validator = (v) => ... تأتي أنواع المعاملات من سياق Validator (الاستدلال السياقي)؛ أما الدوال المجهولة المستقلة فتتطلب تعليقًا لكل معامل.
س ما الخاصية المميزة لنوع دالة يُعيد void؟
ج موضع () => void يقبل «دوال لها قيمة إرجاع» — وتُهمل القيمة ببساطة. لهذا تقبل أنظمة الأحداث أي استدعاء راجع تقريبًا.