Menu
CoddyTech

Estendere le forme

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 43 di 80.

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 è presente in A e tutto ciò che è presente 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}

Mentre 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 indica una forma o l’altra, mentre un’intersezione A & B deve soddisfarle entrambe contemporaneamente. E poiché Admin ha tutti i campi di User, un valore Admin può essere passato ovunque sia previsto un User.

challenge icon

Sfida

Facile

Estendi una struttura di dipendente in una struttura di responsabile.

  1. Scrivi type Employee = {name: string, department: string} e type Manager = Employee & {teamSize: number}.
  2. Crea local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}.
  3. Stampa `{teamLead.name} manages {teamLead.teamSize} people`, poi teamLead.department.

Premi Esegui codice: l'output mostra Alice Johnson manages 8 people e Engineering.

Provalo tu

-- 1) definisci il tipo Employee, poi il tipo Manager = Employee & {...}
-- 2) local teamLead: Manager = {...}
-- 3) stampa la riga di riepilogo, poi il dipartimento

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online