name(arg: T): R تعليقات أنواع الدوال

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

name(arg: T): R تعليقات أنواع الدوال

توضّح تعليقات الدوال أنواعَ المعاملات وقيمة الإرجاع: يرى المستدعي بنظرة واحدة «ماذا يمرر وماذا يحصل عليه»، وتمرير نوع خاطئ يُمنع في وقت الترجمة مباشرة. وبدون تعليقات يمكن لـ TS الاعتماد على الاستدلال كشبكة أمان، لكن التعليق الصريح هو الأدب الأساسي للواجهات البرمجية العامة.

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

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

📝 الصيغة

// أجرة الشحن = أساسية + إضافة عن كل كيلوغرام
function shippingFee(weightKg: number, express: boolean): number {
  return 8 + weightKg * (express ? 3.5 : 1.5);
}

const calc: (w: number, express: boolean) => number = shippingFee;

// لا قيمة إرجاع ذات معنى → void
function notify(msg: string): void {
  console.log(msg);
}

⚙️ المعاملات

weightKg: numberتعليق المعامل: نقطتان ثم النوع بعد الاسم؛ وتمرير نوع خاطئ (مثل سلسلة نصية) خطأ ترجمة
): numberتعليق قيمة الإرجاع: يُكتب بعد قائمة المعاملات، ويُلزم كل عبارة return بالتوافق مع هذا النوع
voidيعني «لا قيمة إرجاع ذات معنى»؛ ولا ينبغي للمستدعي استخدام نتيجته

القيمة المُعادة:يُكتب نوع قيمة الإرجاع بعد قائمة المعاملات (: number)، ويتحقق المترجم من توافق كل return معه؛ وإذا أُغفل استُنتج من جسم الدالة.

▶ مثال

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

الناتج:

عادي: 11
سريع: 15

(مخرجات التشغيل بعد التحويل؛ shippingFee(2, "yes") ستعطي خطأ ترجمة — المعامل الثاني يجب أن يكون boolean)

💡 نقاط مهمة

ℹ️ معلومة يمكن عادةً إغفال نوع قيمة الإرجاع (الاستدلال ذكي)، لكن يُنصح بتعليق الدوال المصدَّرة العامة صراحةً — حتى لا تغيّر التعديلات في التنفيذ العقد الخارجي بصمت.
⚠️ تنبيه لا يمكن إغفال تعليقات المعاملات: على خلاف المتغيرات، معاملات الدوال المستقلة بلا تعليق نوع تُخطئ مباشرةً عند تفعيل noImplicitAny — إذ لا يمكن لـ TS أن يخمّن ما سيمرره المستدعي.
💡 تلميح لا حاجة لكتابة تعليقات معاملات الاستدعاء الراجع بنفسك: عندما يكون للمتغير/المعامل نوع دالة مُعلن مسبقًا، تحصل معاملات جسم التنفيذ على أنواعها تلقائيًا (الاستدلال السياقي، انظر مدخل contextual-typing).
المزيد من الحالات قادم قريبًا.

📚 دروس ذات صلة

❓ أسئلة شائعة

س متى يجب كتابة تعليق نوع قيمة الإرجاع؟
ج ثلاث حالات نموذجية: واجهات برمجية عامة مُصدَّرة، والدوال العودية، وعندما لا تكون نتيجة الاستدلال كما تتوقع (مثل توسيع نوع الاتحاد). أما الدوال الداخلية اليومية فيمكنها الاعتماد على الاستدلال.
س هل فرق بين : void و : undefined؟
ج نعم. void تعني «لا يهم قيمة الإرجاع» ويمكن إسناد أي دالة بأي نوع إرجاع إليها؛ أما undefined فهو نوع محدد يجب أن تعيد فيه الدالة undefined فعليًا.
س هل يجوز تعليق المعاملات بـ any؟
ج تُترجم لكن لا يُنصح بها: any توقف جميع الفحوصات على المعامل وقيمة الإرجاع. فضّل الأنواع الدقيقة، وعند السماح فعليًا بـ«أي شيء» استخدم unknown وضيّقه عند الاستخدام.
Web-Tutorial.com

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

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

100%