Menu
Coddy logo textTech

Estendere le forme

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 41 di 73.

Le forme correlate condividono spesso dei campi. Ogni Admin è anche un User; copiare i campi condivisi in entrambe le dichiarazioni rischia di farle divergere.

Hai incontrato l’operatore di intersezione & quando combinavi gli alias. Funziona esattamente allo stesso modo per le forme. A & B significa «contiene tutto ciò che è in A e tutto ciò che è in B»:

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

-- Admin ora richiede: name, age E level
local root: Admin = {name = "Root", age = 35, level = 9}

Laddove TypeScript richiede una parola chiave extends separata per le interfacce, Luau non ha bisogno di nulla di nuovo: le intersezioni fanno già il lavoro. Puoi concatenare diverse parti:

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

Non confondere & con |: un’unione A | B è una forma o l’altra, mentre un’intersezione A & B deve soddisfare entrambe allo stesso tempo. E poiché Admin ha tutti i campi di User, un valore Admin può essere passato ovunque sia previsto un User.

challenge icon

Sfida

Facile

Crea questi alias di tipo:

  • Employee: id (number), name (string), department (string)
  • Manager: Employee esteso (tramite &) con teamSize (number)
  • Contact: email (string)
  • Developer: l’intersezione di Employee, Contact e {yearsExperience: number}

Crea:

  • teamLead di tipo Manager: id 101, nome "Alice Johnson", dipartimento "Engineering", teamSize 8
  • dev di tipo Developer: id 102, nome "Bob Smith", dipartimento "Engineering", email "bob@company.com", yearsExperience 5

Crea una funzione getManagerSummary che accetta un Manager e restituisce [name] manages [teamSize] people.

Stampa, ciascuno su una riga:

  1. il risultato di getManagerSummary(teamLead)
  2. [name] has [yearsExperience] years of experience per dev
  3. il dipartimento di teamLead
  4. l’email di dev

Provalo tu

-- Scrivi il codice qui
-- 1) definisci Employee, poi Manager / Contact / Developer con &
-- 2) crea teamLead e dev
-- 3) scrivi getManagerSummary
-- 4) stampa le quattro righe richieste
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online