دروس الوحدة (2/2)
المصفوفات والصفوف
في JavaScript، يمكن أن تحتوي المصفوفات على أي نوع من العناصر ويمكن أن تنمو أو تتقلص ديناميكيًا. يضيف TypeScript التحقق من النوع الثابت لضمان بقاء المجموعات متجانسة أو احترام بنية الكتابة الثابتة.
المصفوفات (المجموعات المتجانسة)
في TypeScript، هناك طريقتان متكافئتان لتحديد نوع المصفوفة التي تحتوي على عناصر من نفس النوع:
-
استخدام نوع العنصر متبوعًا بأقواس مربعة (
[]):TSconst numbers: number[] = [1, 2, 3]; const strings: string[] = ['a', 'b', 'c']; -
استخدام النوع
Array<T>العام:TSconst numbers: Array<number> = [1, 2, 3];
كلا بناءي الجملة صالحان تمامًا، لكن الأول (type[]) هو النمط التقليدي والأكثر شيوعًا. إذا حاولت إدراج قيمة غير صالحة (على سبيل المثال numbers.push("hello") في مصفوفة number[])، فسيقوم TypeScript بإنشاء خطأ أثناء الترجمة.
صفوف (مصفوفات ذات طول ثابت)
tuple هو نوع خاص من المصفوفات التي تحتوي على عدد ثابت من العناصر حيث يكون لكل عنصر نوع محدد محدد مسبقًا بناءً على موضعه.
على سبيل المثال، لتخزين استجابة HTTP مكونة من رمز الحالة (رقم) ورسالة (سلسلة):
const response: [number, string] = [200, 'OK'];في هذه الحالة:
- العنصر الأول (
response[0]) يجب أن يكونnumber. - العنصر الثاني (
response[1]) يجب أن يكونstring. - يجب تهيئة المصفوفة بعنصرين بالضبط.
صفوف للقراءة فقط (readonly)
أحد التفاصيل المهمة حول المجموعات في TypeScript هي أنها في وقت التشغيل عبارة عن صفائف JavaScript عادية. هذا يعني أن الأساليب البديلة مثل .push() أو .pop() متاحة تقنيًا ويمكن أن تغير طول المجموعة، وتتجاوز عمليات التحقق من النوع جزئيًا.
لمنع هذا السلوك وفرض الثبات الحقيقي، يمكننا استخدام المُعدِّل readonly:
const point: readonly [number, number] = [10, 20];
// point.push(30); // Compile-time error!جربه بنفسك
التمرين 1: مصفوفة من الأرقام
قم بتعريف مصفوفة مسماة بالدرجات التي تحتوي على أرقام فقط وتتم تهيئتها بالقيم 90 و85 و95. استخدم التعليق التوضيحي الصريح للصفيف. لا تستخدم أي نوع.
إظهار التلميح
استخدم نتائج بناء الجملة: number[] = ... أو Array<number>.
الحل متاح بعد 3 من المحاولات
التمرين 2: صف الإحداثيات ثلاثي الأبعاد
قم بتعريف نقطة صفية مسماة تمثل إحداثيات ثلاثية الأبعاد (ثلاثة أرقام لـ X وY وZ) وتمت تهيئتها بالقيم 10 و20 و30. استخدم تعليقًا توضيحيًا صريحًا.
إظهار التلميح
يجب أن يكون نوع الصف [رقم، رقم، رقم].
الحل متاح بعد 3 من المحاولات
التمرين 3: معلومات الموقع Tuple
قم بتعريف صف مسمى locationInfo يمثل إحداثيات جغرافية باسمه. يجب أن يحتوي على: خط العرض (الرقم)، خط الطول (الرقم) واسم المدينة (السلسلة). قم بتهيئته بالقيم 41.9028 و12.4964 و"روما".
إظهار التلميح
استخدم بناء الجملة لتعريف صف يحتوي على ثلاثة عناصر: [الرقم، الرقم، السلسلة].
الحل متاح بعد 3 من المحاولات
التمرين 4: سجل الدخول Tuple
قم بتعريف صف يسمى logEntry يمثل سطر السجل. يجب أن تحتوي بالترتيب على: طابع زمني (رقم)، ومستوى الخطورة (سلسلة)، ورسالة خطأ (سلسلة). قم بتهيئته بالطابع الزمني 1716300000، والمستوى "INFO"، والرسالة "بدء التطبيق".
إظهار التلميح
استخدم بناء الجملة لتحديد صف مكون من ثلاثة عناصر: [الرقم، السلسلة، السلسلة] وتعيين القيم المحددة.
الحل متاح بعد 3 من المحاولات