(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 يقبل «دوال لها قيمة إرجاع» — وتُهمل القيمة ببساطة. لهذا تقبل أنظمة الأحداث أي استدعاء راجع تقريبًا.
Web-Tutorial.com

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

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

100%