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.
Sfida
FacileCrea questi alias di tipo:
Employee:id(number),name(string),department(string)Manager:Employeeesteso (tramite&) conteamSize(number)Contact:email(string)Developer: l’intersezione diEmployee,Contacte{yearsExperience: number}
Crea:
teamLeaddi tipoManager: id101, nome"Alice Johnson", dipartimento"Engineering", teamSize8devdi tipoDeveloper: id102, nome"Bob Smith", dipartimento"Engineering", email"bob@company.com", yearsExperience5
Crea una funzione getManagerSummary che accetta un Manager e restituisce [name] manages [teamSize] people.
Stampa, ciascuno su una riga:
- il risultato di
getManagerSummary(teamLead) [name] has [yearsExperience] years of experienceperdev- il dipartimento di
teamLead - 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
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
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 i parametri e i valori restituitiTipizzare le funzioni anonimeFunzioni che non restituiscono nullaParametri opzionaliValori predefiniti dei parametriFunzioni variadicheDefinire i tipi di funzioneRiepilogo: funzioni tipizzate2Tipi fondamentali
Tipi di base: num, str, boolIl tipo 'any': una via di fugaIl tipo 'unknown'Nil e tipi opzionaliL'inferenza dei tipi in azioneAnnotazioni 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 strutture misteArray tipizzati multidimensionalitable.unpack e argomenti variabiliRiepilogo: array e mappeEsercitati da solo: Compilatore Luau online