الدرس 8 من 10

المصفوفات والصفوف

هدف الدرس

طول ثابت وأصل محفوظ

01

الشرح

number[] مصفوفة أرقام بأي طول. أما الصفّ (tuple) مثل [string, number] فطوله ثابت ولكل موضع فيه نوعه: الأوّل نصّ والثاني رقم.

والمترجم لا يستنتج الصفوف وحده: [["ليان", 82]] يُستنتج (string | number)[][]، فيضيع الفرق بين الاسم والنتيجة.

وreadonly Entry[] مصفوفة للقراءة فقط: ليس فيها push ولا sort ولا أي دالة تغيّرها في مكانها. ضعها على مُعاملات الدوال التي لا يحقّ لها أن تمسّ ما يصلها.

وهذا يكشف خطأً شائعًا: sort ترتّب المصفوفة الأصلية ثم تُرجعها نفسها، فيتغيّر ترتيب بيانات من استدعاك دون أن يطلب. انسخ أوّلًا: [...entries].sort(...).

02

المطلوب

عرّف type Entry = [string, number] وصِف به عناصر board، واجعل مُعامل ranked من نوع readonly Entry[]، بحيث تُرجع نسخة مرتّبة تنازليًّا بالنتيجة ولا تمسّ الأصل.

معايير التصحيح

6 معايير
  1. لا أخطاء أنواع
  2. Entry صفّ: نصّ ثم رقم
  3. والترتيب المعكوس خطأ
  4. عناصر board معروفة الأنواع
  5. ranked تقبل مصفوفة للقراءة فقط
  6. ranked ترتّب نسخة ولا تمسّ الأصل
main.ts
المخرجاتTypeScript 5.9

جارٍ تحميل مترجم TypeScript… مرّة واحدة ثم يحفظه المتصفح.

–/6

يبدأ الفحص حين تجهز البيئة.

6 معايير في بطاقة «المطلوب».