تحديد أنواع Rest Parameters
جزء من قسم Introduction To TypeScript في رحلة JavaScript على Coddy. الدرس 27 من 73.
يوفر TypeScript rest parameters للتعامل مع هذا السيناريو بأناقة مع الحفاظ على سلامة الأنواع.
تستخدم معاملات البقية (Rest parameters) عامل النشر (...) متبوعاً باسم المعامل ومصفوفة محددة النوع. يقوم هذا بجمع كافة الوسائط المتبقية في معامل مصفوفة واحد:
function sum(...numbers: number[]): number {
let total = 0;
for (const num of numbers) {
total += num;
}
return total;
}
// يمكن استدعاؤها بأي عدد من الوسائط
sum(1, 2); // 3
sum(1, 2, 3, 4, 5); // 15يجب أن يكون معامل rest دائماً هو المعامل الأخير في توقيع الدالة. تضمن TypeScript أن جميع الوسائط الممررة إلى معامل rest تطابق نوع المصفوفة المحدد، مما يمنحك مرونة الوسائط المتغيرة مع أمان الكتابة الثابتة (static typing).
التحدي
سهلقم بإنشاء دالة باسم sumAll تستخدم معاملات الباقي (rest parameters) لقبول أي عدد من الوسائط الرقمية وتعيد مجموعها كـ number. يجب أن تحتوي الدالة على تعليق توضيحي صريح لنوع القيمة المعادة (return type annotation).
قم بإنشاء دالة أخرى باسم findMaximum تستخدم معاملات الباقي لقبول أي عدد من الوسائط الرقمية وتعيد أكبر قيمة بينها كـ number. يجب أن تحتوي الدالة على تعليق توضيحي صريح لنوع القيمة المعادة.
قم بإنشاء دالة ثالثة باسم concatenateStrings تأخذ معامل separator مطلوب من نوع string، يليه معاملات الباقي التي تقبل أي عدد من الوسائط النصية. يجب أن تعيد الدالة جميع الوسائط النصية مدمجة معاً مع وجود الفاصل (separator) بينها. يجب أن تحتوي الدالة على تعليق توضيحي صريح لنوع القيمة المعادة من نوع string.
اختبر دوالك عن طريق استدعائها بالقيم التالية وطباعة النتائج:
- استدعِ
sumAllمع5، و10، و15 - استدعِ
sumAllمع1، و2، و3، و4، و5 - استدعِ
findMaximumمع8، و3، و12، و7 - استدعِ
findMaximumمع25و18 - استدعِ
concatenateStringsمع"-"كفاصل و"apple"، و"banana"، و"cherry" - استدعِ
concatenateStringsمع" | "كفاصل و"red"، و"green"، و"blue"، و"yellow"
اطبع كل نتيجة في سطر منفصل بالترتيب المحدد أعلاه.
جرّب بنفسك
// TODO: اكتب كودك هنا
// إنشاء دالة sumAll باستخدام معاملات البقية (rest parameters)
// إنشاء دالة findMaximum باستخدام معاملات البقية (rest parameters)
// إنشاء دالة concatenateStrings باستخدام الفاصل ومعاملات البقية (rest parameters)
// اختبار الدوال وطباعة النتائج
console.log(sumAll(5, 10, 15));
console.log(sumAll(1, 2, 3, 4, 5));
console.log(findMaximum(8, 3, 12, 7));
console.log(findMaximum(25, 18));
console.log(concatenateStrings("-", "apple", "banana", "cherry"));
console.log(concatenateStrings(" | ", "red", "green", "blue", "yellow"));يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Introduction To 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 عبر الإنترنت