Quando abbiamo un oggetto complesso con proprietà opzionali che a loro volta sono complesse e opzionali, ci ritroviamo a dover scrivere codice che prima di accedere a queste proprietà deve prima verificare che siano definite. Uno dei metodi più usati dagli sviluppatori TypeScript e JavaScript è quello che ricorre all'operatore && come nel seguente codice.
const data = { name: "Stefano Mostarda", address: { city: { id: 1, description: "Roma", }, street: "piazza navona 1" } } if (data && data.address && data.address.city && data.address.city.id) { // codice }
Sebbene perfettamente funzionante, questo codice è tutt'altro che comodo da manutenere. TypeScript 3.7 introduce il supporto per una nuova specifica EcmaScript: optional chaining operator (?).
if (data?.address?.city?.id) { // codice }
L'operatore "?" prevede che se l'espressione a sinistra è null o undefined, allora l'espressione a destra non viene più valutata e viene restituito null protggendoci così da errori.
C'è un0importante cosa da sottolineare: l'operatore ? si comporta in modo leggermente diverso dall'operatore &&. Il primo verifica solo null e undefined, mentre il secondo verifica truthiness.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Utilizzare l nesting nativo dei CSS
Gestione file Javascript in Blazor con .NET 9
Escludere alcuni file da GitHub Secret Scanning
Migliorare l'organizzazione delle risorse con Azure Policy
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Anonimizzare i dati sensibili nei log di Azure Front Door
Aggiornare a .NET 9 su Azure App Service
Eseguire i worklow di GitHub su runner potenziati
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Filtering sulle colonne in una QuickGrid di Blazor
Gestione dell'annidamento delle regole dei layer in CSS