مصفوفات الـ Generic
جزء من قسم Introduction To TypeScript في رحلة JavaScript على Coddy — الدرس 60 من 73.
تعمل المصفوفات والأنواع العامة (generics) معًا بشكل رائع في TypeScript. عندما تعلمت عن المصفوفات المحددة النوع سابقًا، استخدمت صيغة T[] لتحديد أن المصفوفة يمكن أن تحتوي فقط على عناصر من نوع معين. تمنحك الأنواع العامة طريقة أخرى للتعبير عن هذا المفهوم نفسه.
يوفر TypeScript صيغة بديلة للمصفوفات المحددة النوع باستخدام تنسيق Array<T>:
// هذان التصريحان متكافئان:
let numbers1: number[] = [1, 2, 3];
let numbers2: Array<number> = [1, 2, 3];يُعد بناء الجملة Array<T> مفيدًا بشكل خاص عند العمل مع الدوال العامة (generic functions) التي تتعامل مع المصفوفات. فهو يجعل الطبيعة العامة لكودك أكثر وضوحًا وقابلية للقراءة، خاصةً عندما تقوم بإنشاء دوال يمكنها العمل مع مصفوفات من أي نوع مع الحفاظ على سلامة النوع (type safety).
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلقم بإنشاء دالة عامة (generic function) تسمى getFirstElement تأخذ مصفوفة من أي نوع وتعيد العنصر الأول أو undefined إذا كانت المصفوفة فارغة.
يجب أن تقوم الدالة بما يلي:
- استخدام معامل نوع عام
T - قبول معامل واحد يسمى
arrمن نوعArray<T> - إعادة العنصر الأول من النوع
Tأوundefined - أن تحتوي على توصيف صريح لنوع القيمة المرجعة وهو
T | undefined
قم بإنشاء المصفوفات التالية باستخدام صيغة Array<T>:
stringArrayمن نوعArray<string>تحتوي على["apple", "banana", "cherry"]numberArrayمن نوعArray<number>تحتوي على[10, 20, 30, 40]booleanArrayمن نوعArray<boolean>تحتوي على[true, false, true]emptyStringArrayمن نوعArray<string>وتكون فارغة
اختبر الدالة الخاصة بك وقم بطباعة المخرجات التالية:
- اطبع نتيجة استدعاء
getFirstElementمعstringArray - اطبع نتيجة استدعاء
getFirstElementمعnumberArray - اطبع نتيجة استدعاء
getFirstElementمعbooleanArray - اطبع نتيجة استدعاء
getFirstElementمعemptyStringArray - اطبع نتيجة استدعاء
getFirstElementمعArray<string>جديد يحتوي على["single"]
ورقة مرجعية
توفر TypeScript صيغتين متكافئتين للمصفوفات المحددة النوع:
// هذان التصريحان متكافئان:
let numbers1: number[] = [1, 2, 3];
let numbers2: Array<number> = [1, 2, 3];تعتبر صيغة Array<T> مفيدة بشكل خاص عند العمل مع الدوال العامة (generic functions) التي تتعامل مع المصفوفات، مما يجعل الطبيعة العامة لكودك أكثر وضوحاً وقابلية للقراءة مع الحفاظ على سلامة الأنواع (type safety).
جرّب بنفسك
// TODO: اكتب كودك هنا
// أنشئ الدالة العامة getFirstElement
// أنشئ المصفوفات المطلوبة باستخدام صيغة Array<T>
// اختبر الدالة واطبع النتائجيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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) إلى الواجهاتملخص: تحديد هياكل الكائنات9Generics: نظرة أولى
المشكلة التي تحلها الـ Genericsإنشاء دالة Generic Identityاستخدام دالة Genericمصفوفات الـ Genericواجهات الـ Genericملخص: تدريب على الدوال العامة