0Pricing
TypeScript Academy · درس

العناصر المتبقية في الصفائف

استخدموا العناصر المتبقية داخل أنواع الصفائف

العناصر المتبقية في الصفائف درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

Tuples ذات طول متغير

تكون Tuples ذات طول ثابت عادةً، لكن عنصر rest يتيح لموضع واحد استيعاب أي عدد من العناصر. يتيح ذلك نمذجة البيانات التي يكون جزء منها ثابتًا والجزء الآخر متغيرًا.

عنصر rest لاحق

اكتب [string, ...number[]] للدلالة على: سلسلة نصية واحدة، يتبعها صفر من الأرقام أو أكثر. الموضع الأول ثابت، بينما ينمو الجزء المتبقي بحرية.

type Row = [string, ...number[]]
const r: Row = ["scores", 9, 8, 7]
console.log(r[0], r.length) // scores 4

الجزء الثابت مطلوب

يجب وجود العناصر الثابتة في البداية. يمكن أن يكون جزء rest فارغًا، لكن لا يمكن تخطي المواضع الثابتة.

type Row = [string, ...number[]]
const min: Row = ["label"] // ok, zero numbers
// const bad: Row = [] // Error: missing string
console.log(min)

عنصر rest بادئ

يمكن أن يأتي عنصر rest أيضًا في البداية، مع وجود عناصر ثابتة بعده. يتيح ذلك نمذجة رأس متغير يتبعه ذيل ثابت.

type Trailing = [...number[], boolean]
const t: Trailing = [1, 2, 3, true]
console.log(t[t.length - 1]) // true

عنصر rest في الوسط

يمكن أن يقع rest في الوسط، بين عناصر ثابتة في البداية والنهاية. يحدّد TypeScript المواضع الثابتة عند كل طرف.

type Middle = [string, ...number[], boolean]
const m: Middle = ["start", 1, 2, false]
console.log(m[0], m[m.length - 1]) // start false

عنصر rest واحد فقط لكل tuple

يمكن أن تحتوي tuple على عنصر rest واحد كحد أقصى. وجود عنصرَي rest يجعل مواضع العناصر غامضة، ولذلك فهو غير مسموح.

// type Bad = [...string[], ...number[]] // Error: only one rest allowed
type Ok = [string, ...number[]]
const o: Ok = ["x", 1]
console.log(o)

تفكيك tuple تحتوي على rest

ينسجم التفكيك تمامًا مع عناصر rest في tuple. تشغل الارتباطات الثابتة المواضع الثابتة، بينما يلتقط ارتباط rest الجزء المتغير في صورة مصفوفة ذات نوع.

type Row = [string, ...number[]]
const row: Row = ["scores", 9, 8]
const [label, ...values] = row
console.log(label, values) // scores [9, 8]

عناصر tuple ذات تسميات

يمكنك تسمية مواضع tuple لأغراض التوثيق. تظهر التسميات في تلميحات الأدوات والتواقيع، لكنها لا تغيّر قيم وقت التشغيل.

type Range = [start: number, end: number]
const span: Range = [0, 10]
console.log(span[0], span[1]) // 0 10

تسميات عناصر rest

يمكن تسمية عناصر rest أيضًا، وهذا مفيد خصوصًا في tuples الخاصة بمعلمات الدوال لتوفير تلميحات واضحة.

type Args = [command: string, ...flags: string[]]
const a: Args = ["build", "--watch", "--minify"]
console.log(a[0], a.slice(1))

Tuples تحتوي على rest كقوائم معلمات

يمكن لـ tuple تحتوي على عنصر rest أن تصف قائمة معلمات دالة، مما يتيح إنشاء تواقيع دقيقة تجمع بين المعلمات الثابتة والمتغيرة باستخدام Spread.

type Params = [name: string, ...scores: number[]]
function report(...args: Params): string {
  const [name, ...scores] = args
  return name + ": " + scores.join(",")
}
console.log(report("Ada", 9, 8))

أهمية Tuples التي تحتوي على rest

تعبّر Tuples التي تحتوي على rest عن أشكال لا تستطيع المصفوفات العادية تمثيلها: رأس مطلوب يتبعه جسم متغير، أو جسم متغير يتبعه ذيل مطلوب، أو كلاهما. وهي الأساس لكتابة أنواع الدوال متغيرة الوسائط.

type CSVRow = [id: number, ...fields: string[]]
const row: CSVRow = [1, "Ada", "Engineer"]
console.log(row[0], row.slice(1))

اختبار سريع

اختبر مدى فهمك لعناصر rest في tuple.

مراجعة

يتيح عنصر rest في tuple (...T[]) لموضع واحد استيعاب أي عدد من العناصر، بينما تبقى العناصر الثابتة في البداية والنهاية مطلوبة. يمكن أن يكون rest في النهاية أو البداية أو الوسط، لكن لا يُسمح إلا بعنصر rest واحد لكل tuple. ينسجم التفكيك مع هذه الأشكال، وتضيف التسميات تلميحات واضحة، كما تُعد Tuples التي تحتوي على rest أساس كتابة أنواع الدوال متغيرة الوسائط.

الأسئلة الشائعة

هل درس «العناصر المتبقية في الصفائف» مجاني؟

نعم — نص درس «العناصر المتبقية في الصفائف» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «العناصر المتبقية في الصفائف»؟

استخدموا العناصر المتبقية داخل أنواع الصفائف تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «العناصر المتبقية في الصفائف»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المعاملات المتبقية في الدوال
  2. النشر في المصفوفات والكائنات
  3. العناصر المتبقية في الصفائف
  4. تحديد أنواع الدوال متغيرة الوسائط
← العودة إلى TypeScript Academy