🔷 شرح TypeScript

المصفوفات والصفوف (Tuples)

أنواع المصفوفات

نكتب نوع عناصر المصفوفة متبوعًا بـ []:

let numbers: number[] = [1, 2, 3];
let names: string[] = ["علي", "سارة"];

numbers.push(4);        // صحيح
numbers.push("نص");    // خطأ! يجب number

صيغة بديلة بـ Generics:

let scores: Array<number> = [90, 85, 78];

مصفوفة للقراءة فقط (readonly)

تمنع أي تعديل بعد الإنشاء:

let days: readonly string[] = ["السبت", "الأحد"];
days.push("الإثنين");   // خطأ! readonly

الصفوف (Tuples)

الصف مصفوفة بطول ثابت وأنواع محدّدة لكل موضع:

let person: [string, number] = ["أحمد", 30];

console.log(person[0]);   // أحمد (string)
console.log(person[1]);   // 30 (number)

let wrong: [string, number] = [30, "أحمد"];  // خطأ! ترتيب الأنواع

متى تستخدم Tuple بدل Array؟

الحالةاستخدم
قيم من نفس النوع وعدد متغيّرArray (number[])
عدد ثابت بأنواع مختلفة لكل موضعTuple ([string, number])

مثال شائع: قيمة وحالة معًا (مثل useState في React):

let state: [number, (n: number) => void] = [0, (n) => {}];

الصفوف المسمّاة

لتوضيح معنى كل موضع:

let coordinate: [x: number, y: number] = [10, 20];

أخطاء شائعة

  • الخلط بين ترتيب أنواع عناصر الصف.
  • استخدام any[] بدل تحديد نوع العناصر فتضيع الحماية.

🎯 التالي: أنواع الكائنات (Object Types).