Menu
Coddy logo textTech

Extension de structures

Fait partie de la section Introduction à Luau du Journey Lua de Coddy — leçon 41 sur 73.

Les formes similaires partagent souvent des champs. Chaque Admin est également un User ; copier les champs partagés dans les deux déclarations risque de les faire diverger.

Vous avez découvert l'opérateur d'intersection & en combinant des alias — il fonctionne exactement de la même manière pour les formes. A & B signifie « possède tout de A et tout de B » :

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

-- Admin nécessite maintenant : name, age ET level
local root: Admin = {name = "Root", age = 35, level = 9}

Là où TypeScript nécessite un mot-clé extends distinct pour les interfaces, Luau n'a besoin de rien de nouveau — les intersections font déjà le travail. Vous pouvez enchaîner plusieurs parties :

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

Ne confondez pas & avec | : une union A | B représente l'une ou l'autre forme, tandis qu'une intersection A & B doit satisfaire les deux à la fois. Et comme Admin possède chaque champ de User, une valeur Admin peut être transmise partout où un User est attendu.

challenge icon

Défi

Facile

Créez ces alias de type :

  • Employeeid (number), name (string), department (string)
  • ManagerEmployee étendu (via &) avec teamSize (number)
  • Contactemail (string)
  • Developer — l'intersection de Employee, Contact et {yearsExperience: number}

Créez :

  • teamLead de type Manager — id 101, name "Alice Johnson", department "Engineering", teamSize 8
  • dev de type Developer — id 102, name "Bob Smith", department "Engineering", email "bob@company.com", yearsExperience 5

Créez une fonction getManagerSummary qui prend un Manager et renvoie [name] manages [teamSize] people.

Affichez, chacun sur sa propre ligne :

  1. le résultat de getManagerSummary(teamLead)
  2. [name] has [yearsExperience] years of experience pour dev
  3. le department de teamLead
  4. l'email de dev

Essayez vous-même

-- Écrivez le code ici
-- 1) définissez Employee, puis Manager / Contact / Developer avec &
-- 2) créez teamLead et dev
-- 3) écrivez getManagerSummary
-- 4) imprimez les quatre lignes demandées
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Introduction à Luau