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.
Sfida
FacileEstendi una struttura di dipendente in una struttura di responsabile.
- Scrivi
type Employee = {name: string, department: string}etype Manager = Employee & {teamSize: number}. - Crea
local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}. - Stampa
`{teamLead.name} manages {teamLead.teamSize} people`, poiteamLead.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
1Per iniziare con Luau
Che cos'è Luau?Perché usare Luau?Il tuo primo codice LuauVerifica dei tipi e modalità di erroreRiepilogo: introduzione a Luau4Lavorare con le funzioni
Tipizzare parametri e valori restituitiTipizzare le funzioni anonimeFunzioni che non restituiscono nullaParametri opzionaliValori predefiniti dei parametriValori predefiniti per i booleaniFunzioni variadicheDefinire i tipi di funzioneRiepilogo: funzioni tipizzate7Progetto: Gestore di attività tipizzato
Progetto: La struttura di un'attivitàFunzione per aggiungere un'attività2Tipi fondamentali
Numero, stringa e booleanoIl tipo 'any': una via di fugaIl tipo 'unknown'Tipi nil e opzionaliL’inferenza dei tipi in praticaAnnotazioni esplicite dei tipiRipasso: esercizi sui tipi fondamentali5Alias, unioni e intersezioni
Alias di tipo per i primitiviTipi unioneLavorare con i tipi unioneTipi letteraliTipi intersezioneCombinare gli alias di tipoRiepilogo: combinazioni avanzate di tipi3Tabelle tipizzate: array e mappe
Array tipizzatiAggiungere e leggere elementiChe cos'è un tipo map?Dichiarare e accedere alle mappeIterare sulle tabelleTabelle con forme misteLeggere una grigliaCreare una grigliatable.unpackRiepilogo: array e mappeEsercitati da solo: Compilatore Luau online