Menu
CoddyTech

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.

challenge icon

Sfida

Facile

Combina due piccole forme in una sola.

  1. Scrivi type HasName = {name: string}, type HasAge = {age: number} e type Person = HasName & HasAge.
  2. Crea local user: Person = {name = "Omar", age = 31}.
  3. 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

Esercitati da solo: Compilatore Luau online