![]() |
Il destructuring è molto più di una scorciatoia sintattica: è un modo potente per rendere il codice più chiaro e gestire strutture complesse in modo elegante. Qui vedremo cosa fa, perché lo fa, e quando usarlo, con esempi spiegati passo dopo passo.
✅ 1. Destructuring di Array
const numbers = [1, 2, 3];
const [a, b, c] = numbers;
Spiegazione:
numbersè un array.- La riga
const [a, b, c] = numbers;assegna:a = numbers[0]→1b = numbers[1]→2c = numbers[2]→3
- Il destructuring è posizionale: l’ordine degli elementi è fondamentale.
✅ 2. Destructuring di Oggetti
const user = { name: "Luca", age: 30 };
const { name, age } = user;
Spiegazione:
- Qui estraiamo proprietà dall’oggetto
user. nameeagesono proprietà diuser.- Il destructuring funziona per nomi corrispondenti.
❗ Se scriviconst { nome } = user, otterraiundefinedperchénomenon è una proprietà dell’oggetto.
✅ 3. Valori Predefiniti
const [x = 10, y = 20] = [5];
Spiegazione:
xprende il primo valore dell’array, che è5.ynon trova un secondo valore, quindi usa il valore di default20.
Questa tecnica è utile per gestire parametri opzionali o valori mancanti.
✅ 4. Ridenominazione delle Variabili (Alias)
const person = { firstName: "Anna", lastName: "Rossi" };
const { firstName: name, lastName: surname } = person;
Spiegazione:
firstName: namesignifica: prendi la proprietàfirstNamee assegnala alla variabilename.- Utile se vuoi cambiare il nome per maggiore chiarezza o per evitare conflitti.
✅ 5. Rest Operator nel Destructuring
Array:
const [first, ...rest] = [1, 2, 3, 4];
firstprende il primo valore dell’array →1....restprende tutti gli altri →[2, 3, 4].
Il ...rest può essere usato solo come ultima voce.
Oggetti:
const { a, ...others } = { a: 1, b: 2, c: 3 };
aviene estratto normalmente.othersconterrà{ b: 2, c: 3 }.
✅ 6. Destructuring nei Parametri di Funzione
function greet({ name, age }) {
console.log(`Ciao ${name}, hai ${age} anni.`);
}
- Destructuring direttamente nei parametri della funzione.
- Utile per estrarre solo ciò che ti serve da un oggetto complesso.
Default nei Parametri
function createUser({ username = "anonimo", isAdmin = false } = {}) {
return { username, isAdmin };
}
= {}impedisce errori se la funzione è chiamata senza argomenti.username = "anonimo"fornisce un fallback.
✅ 7. Nested Destructuring
const user = {
id: 1,
profile: {
name: "Lucia",
contact: {
email: "lucia@mail.com"
}
}
};
const { profile: { contact: { email } } } = user;
- Estrai
user.profile.contact.emailin una sola riga. - Utile per oggetti profondi, ma attenzione se manca un livello: può generare errori.
✅ 8. Swapping di Variabili
let a = 1, b = 2;
[a, b] = [b, a];
- Inverti i valori di
aebsenza usare una variabile temporanea.
✅ 9. Combinare Destructuring e Spread
const config = {
debug: true,
port: 8080,
env: "production"
};
const { debug, ...restConfig } = config;
debugviene estratto.restConfigcontiene le altre proprietà:{ port: 8080, env: "production" }.
Utile quando vuoi eliminare alcune proprietà prima di passare un oggetto a una funzione o API.
❌ Errori Comuni da Evitare
const { foo } = undefined;
❗ Questo codice causa un errore (Cannot destructure property 'foo' of undefined).
Corretto:
const { foo } = someObject || {};
Oppure nei parametri di funzione, usa = {} per evitare errori.
🎓 Esempio Completo e Realistico
function setupConnection({
host = "localhost",
port = 80,
credentials: { username, password } = {}
} = {}) {
console.log(`Connecting to ${host}:${port} as ${username || "guest"}`);
}
- Supporta oggetti parziali o mancanti senza lanciare errori.
- Estrae dati annidati con destructuring.
- Fornisce valori di default a tutti i livelli.
🏁 Conclusione
Il destructuring è uno strumento semantico: permette di dire “voglio proprio questi dati” e ignorare il resto. È utile in componenti React, funzioni utility, gestori di eventi, fetch di dati API e molto altro.
👉 Un esperto non si limita a usarlo: lo usa bene, in modo chiaro, sicuro e leggibile.
Follow me #techelopment
Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment
