Tipi intersezione
Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 36 di 80.
Le unioni indicano che un valore è di un tipo o di un altro. I tipi intersezione indicano il contrario: la e commerciale & combina le strutture delle tabelle in un tipo che ha tutti i campi di ogni parte:
type HasName = { name: string }
type HasAge = { age: number }
type Person = HasName & HasAge
-- un Person deve avere ENTRAMBI i campi
local user: Person = {
name = "Alice",
age = 25,
}Se ometti age, il verificatore segnala un errore: un’intersezione è un «e», mai una scelta tra alternative. Questo ti permette di creare strutture grandi a partire da componenti piccoli e riutilizzabili: definisci tipi mirati per aspetti distinti, poi combinali secondo necessità:
type HasEmail = { email: string }
type Employee = HasName & HasAge & HasEmail
Una nota importante su Luau: interseca strutture di tabelle (e tipi funzione), non tipi primitivi. Qualcosa come number & string non ha senso, perché nessun valore può essere entrambe le cose allo stesso tempo. Quando vuoi «questa struttura più quell’altra», & è lo strumento giusto.
A runtime, naturalmente, un Person è semplicemente una normale tabella Lua: l’intersezione esiste solo per il verificatore.
Sfida
FacileCombina due piccole forme in una sola.
- Scrivi
type HasName = {name: string},type HasAge = {age: number}etype Person = HasName & HasAge. - Crea
local user: Person = {name = "Omar", age = 31}. - Stampa
`Name: {user.name}, Age: {user.age}`.
Premi Run Code: l'output mostra Name: Omar, Age: 31.
Provalo tu
-- 1) type HasName, type HasAge, type Person = HasName & HasAge
-- 2) local user: Person = {...}
-- 3) stampa la riga con il nome e l'età
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