المعاملات الاختيارية باستخدام '?'
جزء من قسم مقدمة إلى 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، لذا يجب عليك التحقق من وجودها قبل استخدامها.
التحدي
سهلقم بإنشاء دالة باسم 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 مع تعليقات توضيحية مناسبة للأنواع
// اختبر الدوال واطبع النتائجيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس مقدمة إلى TypeScript
1البداية مع TS
ما هي TypeScript؟لماذا نستخدم TypeScript؟أول كود TypeScript لكعملية الـ Compilation والأخطاءملخص: مقدمة في TS4التعامل مع الدوال
تحديد أنواع المعاملات وقيم الإرجاعتحديد أنواع Arrow Functionsنوع الإرجاع 'void'المعاملات الاختيارية باستخدام '?'القيم الافتراضية للمعاملاتتحديد أنواع Rest Parametersتعريف أنواع الدوالملخص: بناء دوال محددة الأنواع2الأنواع الأساسية
الأنواع الأساسية: str, num, booleanالنوع 'any': مخرج الهروبالنوع 'unknown'التعامل مع 'null' و 'undef'استنتاج الأنواع في التطبيق العمليتوضيحات الأنواع الصريحةمراجعة: تدريب على الأنواع الأساسية5الأنواع: الأسماء المستعارة، الاتحادات والتقاطعات
الأسماء المستعارة للأنواع الأساسية (Primitives)أنواع الاتحاد ('|')التعامل مع أنواع الاتحادالأنواع الحرفية (Literal Types)أنواع التقاطع ('&')دمج الأسماء المستعارة للأنواعملخص: تركيبات الأنواع المتقدمة3هياكل البيانات: المصفوفات و Tuple
المصفوفات محددة النوع (Typed Arrays)معدل 'readonly' للمصفوفاتما هو الـ Tuple؟تعريف والوصول إلى الـ Tuplesتفكيك الـ Tuples (Destructuring)الـ Tuples للقراءة فقط (Readonly)المصفوفات محددة النوع متعددة الأبعاداستخدام Spread Operator مع المصفوفاتملخص: المصفوفات و Tuples6تحديد أنواع الكائنات والواجهات
توصيف أنواع الكائنات المضمنة (Inline)الأسماء المستعارة للأنواع (Type Aliases) للكائناتمقدمة عن الواجهات (Interfaces)الواجهات (Interfaces) مقابل الأسماء المستعارة للأنواع (Type Aliases)الخصائص الاختيارية وخصائص القراءة فقط (Readonly)توسيع الواجهات والأنواعإضافة الدوال (Methods) إلى الواجهاتملخص: تحديد هياكل الكائناتتدرّب بنفسك: مترجم JavaScript عبر الإنترنت