Menu
CoddyTech

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

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

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

تعرّفت على عامل التقاطع & عند الجمع بين الأسماء المستعارة. وهو يعمل بالطريقة نفسها تمامًا مع الأشكال. 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 إلى شيء جديد: فالتقاطعات تؤدي المهمة بالفعل. يمكنك ربط عدة أجزاء معًا:

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

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

challenge icon

التحدي

سهل

وسّع بنية الموظف لتصبح بنية مدير.

  1. اكتب type Employee = {name: string, department: string} وtype Manager = Employee & {teamSize: number}.
  2. أنشئ local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}.
  3. اطبع `{teamLead.name} manages {teamLead.teamSize} people`، ثم teamLead.department.

اضغط على تشغيل Code: يُظهر الناتج Alice Johnson manages 8 people وEngineering.

جرّب بنفسك

-- 1) عرّف النوع Employee، ثم النوع Manager = Employee & {...}
-- 2) عرّف المتغير المحلي teamLead: Manager = {...}
-- 3) اطبع سطر الملخص، ثم القسم

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

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