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
Utilizzare database e servizi con gli add-on di Container App
Le novità di Angular: i miglioramenti alla CLI
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Disabilitare automaticamente un workflow di GitHub
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Usare un KeyedService di default in ASP.NET Core 8
Limitare le richieste lato server con l'interactive routing di Blazor 8
Generare token per autenicarsi sulle API di GitHub
Generare file PDF da Blazor WebAssembly con iText
Evitare il flickering dei componenti nel prerender di Blazor 8
Utilizzare i nuovi piani dedicati di Azure Container Apps