الـ Heterogeneous Enums
جزء من قسم Introduction To TypeScript في رحلة JavaScript على Coddy — الدرس 55 من 73.
يدعم TypeScript أيضاً التعدادات غير المتجانسة (heterogeneous enums) - وهي التعدادات التي تحتوي على مزيج من الأعضاء النصية والرقمية داخل نفس التصريح.
إليك كيفية إنشاء تعداد (enum) غير متجانس:
enum MixedEnum {
No = 0,
Yes = "YES",
Maybe = 1
}في هذا المثال، No و Maybe هما أعضاء رقميون، بينما Yes هو عضو نصي. يسمح TypeScript بهذه المرونة، على الرغم من أنه من المهم ملاحظة أن التعدادات غير المتجانسة (heterogeneous enums) نادرًا ما تُستخدم في الممارسة العملية.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلأنشئ enum غير متجانس (heterogeneous enum) باسم ResponseCode يمزج بين القيم النصية والعددية:
Successتمت تهيئته بـ200Errorتمت تهيئته بـ"ERROR"NotFoundتمت تهيئته بـ404Timeoutتمت تهيئته بـ"TIMEOUT"
أنشئ دالة باسم handleResponse تأخذ معاملًا واحدًا:
codeمن نوعResponseCode
يجب أن تقوم الدالة بما يلي:
- التحقق من رمز الاستجابة وطباعة رسائل مختلفة بناءً على القيمة
- إذا كان الرمز هو
ResponseCode.Success، اطبع"Request successful" - إذا كان الرمز هو
ResponseCode.Error، اطبع"General error occurred" - إذا كان الرمز هو
ResponseCode.NotFound، اطبع"Resource not found" - إذا كان الرمز هو
ResponseCode.Timeout، اطبع"Request timed out" - أن يكون نوع الإرجاع هو
void
أنشئ أربعة متغيرات لتوضيح قيم الـ enum:
successCodeمن نوعResponseCodeوقم بتعيينResponseCode.SuccessلهerrorCodeمن نوعResponseCodeوقم بتعيينResponseCode.ErrorلهnotFoundCodeمن نوعResponseCodeوقم بتعيينResponseCode.NotFoundلهtimeoutCodeمن نوعResponseCodeوقم بتعيينResponseCode.Timeoutله
اطبع المخرجات التالية:
- اطبع قيمة
successCode - اطبع قيمة
errorCode - اطبع قيمة
notFoundCode - اطبع قيمة
timeoutCode - استدعِ
handleResponseمعResponseCode.Success - استدعِ
handleResponseمعerrorCode - استدعِ
handleResponseمع القيمة العددية404
ورقة مرجعية
يدعم TypeScript التعدادات غير المتجانسة (heterogeneous enums) التي تحتوي على مزيج من الأعضاء النصية والعددية داخل نفس التصريح:
enum MixedEnum {
No = 0,
Yes = "YES",
Maybe = 1
}في التعدادات غير المتجانسة، يمكنك مزج القيم العددية والنصية. بينما يسمح TypeScript بهذه المرونة، فإن التعدادات غير المتجانسة نادراً ما تُستخدم في الممارسة العملية.
جرّب بنفسك
// TODO: اكتب كودك هنا
// ResponseCode أنشئ التعداد
// handleResponse أنشئ الدالة
// أنشئ المتغيرات التوضيحية
// اطبع المخرجات المطلوبةيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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) إلى الواجهاتملخص: تحديد هياكل الكائنات