استخدام الـ String Enums
جزء من قسم مقدمة إلى TypeScript في رحلة JavaScript على Coddy. الدرس 54 من 73.
تعمل الـ String enums بشكل جيد بشكل خاص كمعاملات للدوال (function parameters) لأنها توفر قيمًا واضحة وقابلة للقراءة مع الحفاظ على سلامة الأنواع (type safety).
إليك كيفية استخدام تعداد نصي (string enum) في دالة:
function move(direction: Direction): void {
console.log(`Moving ${direction.toLowerCase()}...`);
}عندما تستدعي هذه الدالة، سيقبل TypeScript فقط قيم الـ enum المحددة مسبقاً. يمكنك استدعاؤها باستخدام move(Direction.Up)، والتي ستُخرج "Moving up...". سيوفر محرر الأكواد الخاص بك ميزة الإكمال التلقائي لأعضاء الـ enum المتاحة، وسيقوم TypeScript برصد أي محاولات لتمرير قيم اتجاه غير صالحة.
التحدي
سهللقد تم تزويدك بما يلي من التحدي السابق:
- تعداد السلسلة النصية (string enum) المسمى
Directionمع الأعضاءUp، وDown، وLeft، وRight - المتغيرات:
upDirection، وdownDirection، وleftDirection، وrightDirection
قم بإنشاء دالة باسم move تأخذ معاملًا واحدًا:
directionمن النوعDirection
يجب أن تقوم الدالة بـ:
- طباعة رسالة بالتنسيق
"Moving [direction]..."حيث[direction]هي نسخة الأحرف الصغيرة (lowercase) من قيمة السلسلة النصية للتعداد - أن يكون نوع الإرجاع الخاص بها هو
void
قم بإنشاء دالة باسم getMovementDescription تأخذ معاملًا واحدًا:
directionمن النوعDirection
يجب أن تقوم الدالة بـ:
- إرجاع سلسلة نصية تصف الحركة بناءً على الاتجاه:
- بالنسبة لـ
Direction.Up: إرجاع"Going upward" - بالنسبة لـ
Direction.Down: إرجاع"Going downward" - بالنسبة لـ
Direction.Left: إرجاع"Turning left" - بالنسبة لـ
Direction.Right: إرجاع"Turning right" - أن يكون لها نوع إرجاع صريح وهو
string
قم بإنشاء متغير باسم playerDirection من النوع Direction وقم بتعيين Direction.Up له.
قم بطباعة المخرجات التالية:
- استدعاء
moveمعDirection.Up - استدعاء
moveمعleftDirection - استدعاء
moveمعplayerDirection - طباعة نتيجة استدعاء
getMovementDescriptionمعDirection.Down - طباعة نتيجة استدعاء
getMovementDescriptionمعrightDirection - استدعاء
moveمعDirection.Right
جرّب بنفسك
// من التحدي السابق - تعداد الاتجاه (Direction enum) والمتغيرات
enum Direction {
Up = "Up",
Down = "Down",
Left = "Left",
Right = "Right"
}
const upDirection = Direction.Up;
const downDirection = Direction.Down;
const leftDirection = Direction.Left;
const rightDirection = Direction.Right;
// المهام المطلوبة: اكتب الكود الخاص بك هنا
// أنشئ دالة move التي تأخذ معامل Direction وتطبع "...Moving [direction]"
// أنشئ دالة getMovementDescription التي تُرجع أوصاف الحركة
// أنشئ متغير playerDirection
// استدعِ الدوال واطبع المخرجات المطلوبةيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس مقدمة إلى 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)أنواع التقاطع ('&')دمج الأسماء المستعارة للأنواعملخص: تركيبات الأنواع المتقدمة8Enums
ما هو الـ Numeric Enum؟استخدام الـ Numeric Enumsما هو الـ String Enum؟استخدام الـ String Enumsالـ Heterogeneous Enumsملخص: استخدام الـ Enums3هياكل البيانات: المصفوفات و Tuple
المصفوفات محددة النوع (Typed Arrays)معدل 'readonly' للمصفوفاتما هو الـ Tuple؟تعريف والوصول إلى الـ Tuplesتفكيك الـ Tuples (Destructuring)الـ Tuples للقراءة فقط (Readonly)المصفوفات محددة النوع متعددة الأبعاداستخدام Spread Operator مع المصفوفاتملخص: المصفوفات و Tuples6تحديد أنواع الكائنات والواجهات
توصيف أنواع الكائنات المضمنة (Inline)الأسماء المستعارة للأنواع (Type Aliases) للكائناتمقدمة عن الواجهات (Interfaces)الواجهات (Interfaces) مقابل الأسماء المستعارة للأنواع (Type Aliases)الخصائص الاختيارية وخصائص القراءة فقط (Readonly)توسيع الواجهات والأنواعإضافة الدوال (Methods) إلى الواجهاتملخص: تحديد هياكل الكائناتتدرّب بنفسك: مترجم JavaScript عبر الإنترنت