Ciao, e benvenuto nella quinta puntata della quarantaseiesima stagione. Oggi mettiamo a fuoco la cosa più preziosa che TypeScript prende, quella che aggancia direttamente la morbidezza di JavaScript di cui parlammo. È l'errore più comune, e più stupido, in tutto il software: usare qualcosa che non c'è. Oggi vediamo come TypeScript rende visibile ciò che potrebbe mancare, e ti costringe a farci i conti.
Partiamo dal problema, perché lo conosci di sicuro. In JavaScript, come in tanti linguaggi, c'è una fonte di crolli silenziosa e infinita: qualcosa che potrebbe non esserci. Chiedi il profilo di un utente, ma forse quell'utente non esiste. Allunghi la mano dentro una scatola, ma forse è vuota. E nel JavaScript morbido, spesso non lo scopri finché non provi a usare la cosa mancante: a quel punto tutto crolla, con quel messaggio famigerato, non riesco a leggere una proprietà del niente. È uno dei crolli più frequenti di tutta la storia del software, uno che chiunque abbia programmato ha visto mille volte.
Voglio darti un aneddoto, perché inquadra la portata del problema. Chi ha inventato, decenni fa, il concetto di valore-niente, quel segnaposto per dire qui non c'è nulla, l'ha poi definito il suo errore da un miliardo di dollari. Un miliardo, per tutti i crolli, i bug, le ore perse che quella piccola idea ha causato nel mondo. Perché il niente si infila dappertutto, silenzioso, e aspetta il momento peggiore per farti inciampare: proprio quando dai per scontato che qualcosa ci sia, e invece non c'è. È un buco nel pavimento coperto da un tappeto.
Voglio darti la risposta di TypeScript, perché è quietamente rivoluzionaria. TypeScript fa una cosa semplice e potente: può rendere il forse-manca una parte visibile del tipo di una cosa. Può cioè segnare, nero su bianco, questa cosa potrebbe essere il niente. E poi, cosa fondamentale, si rifiuta di lasciartela usare finché non hai gestito la possibilità che non ci sia. Il correttore ti ferma: guarda che questo potrebbe essere nulla, occupatene prima. Sei costretto, alla scrivania, a rispondere alla domanda e se fosse vuoto, prima ancora di poter scrivere il crollo. Il buco nel pavimento, adesso, è segnalato da un cartello che non puoi ignorare.
Voglio farti vedere cosa cambia, perché è enorme. Questo trasforma un'intera categoria dei crolli più comuni in un errore che vedi mentre scrivi. Non più una sorpresa a runtime, davanti all'utente, ma una sottolineatura rossa alla scrivania, che ti dice: hai dimenticato il caso in cui non c'è niente. È TypeScript al suo meglio: prende la morbidezza più pericolosa di JavaScript, quella che lascia passare il niente in silenzio, e la rende esplicita, visibile, impossibile da fingere di non vedere. Non ti dà una funzione in più: ti toglie un intero modo di sbagliare, il più diffuso di tutti, spostandolo da sorpresa lontana a domanda immediata. Non risolve lui il caso difficile: ti obbliga a non dimenticare quello facile, quello che tutti dimenticano proprio perché è facile.
Voglio darti l'immagine che rende chiara questa idea, perché è precisa. Pensa a un modulo che non ti lascia inviare finché non hai compilato il campo che dice: cosa succede se questo è vuoto? Sul momento è un po' fastidioso, ti frena. Ma significa che il caso vuoto non potrà mai più esplodere in silenzio dopo, quando non te lo aspetti. Lo strumento si rifiuta di lasciarti fingere che la strada triste, quella in cui la cosa non c'è, non esista. Ti obbliga a guardarla in faccia adesso, quando costa poco, invece che dopo, quando costa un crollo.
Voglio trarre la lezione generale, perché va oltre TypeScript. Una fetta enorme dei guasti, in qualunque sistema, viene dalla cosa che non c'era. E l'aiuto più profondo che uno strumento può darti non è risolverti i casi difficili: è costringerti a riconoscere quello facile da dimenticare. Rendere visibile una possibilità invisibile, il forse-manca, vale spesso più di qualunque funzione ingegnosa. Perché non è l'ignoranza a farci cadere, di solito, ma la dimenticanza: il caso che sapevamo, ma abbiamo dato per scontato. Uno strumento che non ti lascia dimenticare è un grande strumento.
Per oggi ci fermiamo qui. Abbiamo messo a fuoco la cosa più preziosa che TypeScript prende: la più comune di tutte, usare qualcosa che potrebbe non esserci. In JavaScript morbido, il niente si infila silenzioso e ti fa crollare al momento peggiore, tanto che chi lo inventò lo chiamò il suo errore da un miliardo di dollari. TypeScript rende il forse-manca visibile nel tipo, e si rifiuta di lasciartelo usare finché non hai gestito il caso vuoto: ti costringe alla scrivania a rispondere e se non c'è. Così un'intera categoria di crolli diventa una sottolineatura rossa mentre scrivi. Come un modulo che non ti lascia inviare finché non hai previsto il vuoto. La lezione: l'aiuto più profondo è essere costretti a non dimenticare il caso facile. Nella prossima puntata vediamo il cursore della severità. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.