Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

توسيع أشكال الجداول

جزء من قسم مقدمة إلى Luau في رحلة Lua على Coddy. الدرس 41 من 73.

غالبًا ما تتشارك الأشكال المرتبطة في الحقول. كل Admin هو أيضًا User؛ ونسخ الحقول المشتركة إلى كلا التصريحين قد يدفعهما إلى الاختلاف.

لقد تعرّفت على عامل & الخاص بـ intersection عند دمج الأسماء المستعارة. وهو يعمل بالطريقة نفسها تمامًا مع الأشكال. يعني A & B «يحتوي على كل شيء من A و كل شيء من B»:

type User = {name: string, age: number}
type Admin = User & {level: number}

-- Admin يتطلب الآن: name, age و level
local root: Admin = {name = "Root", age = 35, level = 9}

بينما تحتاج TypeScript إلى كلمة مفتاحية منفصلة extends للواجهات، لا تحتاج Luau إلى أي شيء جديد: إذ تؤدي عمليات intersection المهمة بالفعل. ويمكنك ربط عدة أجزاء:

type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}

لا تخلط بين & و|: فـ unionA | B هو شكل إما هذا أو ذاك، بينما يجب أن يحقق intersectionA & B كلاهما في الوقت نفسه. وبما أن Admin يحتوي على كل حقول User، فيمكن تمرير قيمة من النوع Admin إلى أي مكان يُتوقع فيه User.

challenge icon

التحدي

سهل

أنشئ الأسماء المستعارة للأنواع التالية:

  • Employee: id (numbername (stringdepartment (string)
  • Manager: توسيع Employee (عبر &) باستخدام teamSize (number)
  • Contact: email (string)
  • Developer: تقاطع Employee وContact و{yearsExperience: number}

أنشئ ما يلي:

  • teamLead من النوع Manager: ‏id 101، والاسم "Alice Johnson"، والقسم "Engineering"، وteamSize 8
  • dev من النوع Developer: ‏id 102، والاسم "Bob Smith"، والقسم "Engineering"، والبريد الإلكتروني "bob@company.com"، وyearsExperience 5

أنشئ دالة getManagerSummary تأخذ قيمة من النوع Manager وتُرجع [name] manages [teamSize] people.

اطبع، كل قيمة في سطر مستقل:

  1. نتيجة getManagerSummary(teamLead)
  2. [name] has [yearsExperience] years of experience لـ dev
  3. قسم teamLead
  4. البريد الإلكتروني لـ dev

جرّب بنفسك

-- اكتب الكود هنا
-- 1) عرّف Employee، ثم Manager / Contact / Developer مع &
-- 2) أنشئ teamLead و dev
-- 3) اكتب getManagerSummary
-- 4) اطبع الأسطر الأربعة المطلوبة
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس مقدمة إلى Luau

تدرّب بنفسك: مترجم Lua عبر الإنترنت