Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

المعاملات الاختيارية باستخدام '?'

جزء من قسم مقدمة إلى TypeScript في رحلة JavaScript على Coddy. الدرس 25 من 73.

أحياناً قد ترغب في إنشاء دوال حيث لا تكون بعض المعاملات مطلوبة دائماً. توفر TypeScript بناء الجملة ? لتمييز المعاملات على أنها اختيارية، مما يعني أن المستدعين يمكنهم اختيار ما إذا كانوا سيوفرونها أم لا عند استدعاء الدالة.

لجعل المعلمة اختيارية، يمكنك إضافة علامة استفهام بعد اسم المعلمة ولكن قبل تعليق النوع:

function greet(name: string, greeting?: string): string {
  if (greeting) {
    return greeting + ", " + name;
  }
  return "Hello, " + name;
}

في هذا المثال، name مطلوب بينما greeting اختياري. يمكنك استدعاء هذه الدالة باستخدام الاسم فقط (greet("Alice")) أو باستخدام كلا المعاملين (greet("Alice", "Good morning")). داخل الدالة، المعاملات الاختيارية لها النوع string | undefined، لذا يجب عليك التحقق من وجودها قبل استخدامها.

challenge icon

التحدي

سهل

قم بإنشاء دالة باسم createUserProfile تأخذ معاملين: username من نوع string (مطلوب) و displayName من نوع string (اختياري). يجب أن تعيد الدالة سلسلة نصية مع تحديد نوع القيمة المعادة بشكل صريح.

عند توفير كلا المعاملين، يجب أن تعيد الدالة: "Profile: [displayName] (@[username])"

عند توفير اسم المستخدم فقط، يجب أن تعيد الدالة: "Profile: @[username]"

قم بإنشاء دالة أخرى باسم calculateDiscount تأخذ معاملين: price من نوع number (مطلوب) و membershipLevel من نوع string (اختياري). يجب أن تعيد الدالة رقماً مع تحديد نوع القيمة المعادة بشكل صريح.

عند توفير كلا المعاملين، يجب أن تعيد الدالة السعر مخفضاً بنسبة 10% (اضرب في 0.9).

عند توفير السعر فقط، يجب أن تعيد الدالة السعر الأصلي دون تغيير.

اختبر دوالك عن طريق استدعائها بالقيم التالية وطباعة النتائج:

  • استدعِ createUserProfile مع "john_doe" و "John Doe"
  • استدعِ createUserProfile مع "jane_smith" فقط
  • استدعِ calculateDiscount مع 100 و "premium"
  • استدعِ calculateDiscount مع 75 فقط

اطبع كل نتيجة في سطر منفصل بالترتيب المحدد أعلاه.

جرّب بنفسك

// TODO: اكتب كودك هنا
// أنشئ دالة createUserProfile مع تعليقات توضيحية مناسبة للأنواع
// أنشئ دالة calculateDiscount مع تعليقات توضيحية مناسبة للأنواع

// اختبر الدوال واطبع النتائج
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس مقدمة إلى TypeScript

تدرّب بنفسك: مترجم JavaScript عبر الإنترنت