Perché si dovrebbe (probabilmente) usare Typescript
Dominik Grzedzielski
Senior Software Engineer
Tutti coloro che utilizzano l'ecosistema JavaScript conoscono oggi Typescript. Typescript è una delle tecnologie più amate* e il suo utilizzo è in costante aumento (la quota di utilizzo è passata da 52% nel 2018 a 78% nel 2020)*.
L'attuale posizione di Typescript non è arrivata dal nulla, poiché questa tecnologia è in grado di migliorare realmente l'esperienza degli sviluppatori. Una codifica più esplicita aumenta il controllo e la prevedibilità di codice. In questo articolo cercherò di convincervi a usare Typescript.
Di solito, quando si sviluppa un'applicazione in JavaScriptIl flusso potrebbe sembrano essere così:
Cambiamento,
Andare all'applicazione e controllare la parte modificata / Eseguire i test (correlati).
Scoprite se tutto è a posto.
Con Typescript, si può effettivamente apportare la modifica e se c'è qualche errore di tipo nel codice, lo saprete immediatamente grazie al messaggio di errore del compilatore o al feedback in tempo reale dell'IDE. Naturalmente, il compilatore Typescript non risolverà tutti i problemi e non avviserà di tutti i bug, ma il suo aiuto potrebbe essere prezioso.
Migliore completamento della sintassi negli IDE
È molto semplice. Se si utilizzano buoni IDE, come WebStorm o VSCode, si otterranno migliore completamento della sintassi con Typescript. Forse non sembra un grande miglioramento dell'esperienza dello sviluppatore, ma alla fine ogni singolo miglioramento è importante perché può farci risparmiare tempo e, ancora una volta, evitare errori di battitura. Inoltre, possiamo definire il nostro tipo o interfaccia una volta sola; non dovendo ricordare sempre la struttura, possiamo concentrarci sulla scrittura della logica di business.
Rifattorizzazione meno dolorosa
Immaginiamo di dover rifattorizzare per qualsiasi motivo, ad esempio, di aver aderito a un progetto progetto e si riceve il compito di aggiungere una nuova funzionalità, ma questa è in qualche modo collegata al codice legacy. Typescript può renderlo più facile e meno doloroso, perché quando si fa una modifica e c'è un altro punto in cui si deve fare un'altra modifica, il compilatore ci avvisa di questo.
Ad esempio, potrebbe trattarsi di una firma di funzione modificata o magari, dopo la modifica, di un restituirà qualcosa di completamente diverso, quindi anche il tipo restituito sarà diverso.
Essere più sicuri della base di codice
JavaScript è tipizzato in modo debole e dinamico, quindi quando si inizializza una variabile con il valore lasciare la query = '' più avanti nel codice, lo sviluppatore potrebbe fare qualcosa di irrazionale per errore, per esempio query = truee sarà un codice JS valido.
In un codice ben scritto, l'assegnazione di un valore booleano a una variabile che in precedenza era una stringa non dovrebbe avvenire. Quindi, di solito, l'assegnazione con cambio di tipo deriva da un errore.
Quando si usa Typescript, non si può cambiare il tipo di variabile, quindi se si rende la variabile lasciare la query = '' sarà stringa e non potremo cambiare il suo tipo per errore.
Se vogliamo che una variabile sia di più tipi, lo facciamo sempre in modo esplicito usando il tipo union, ad esempio stringa | numero.
Pertanto, Typescript rende il nostro codice più prevedibile ed esplicito. Inoltre, Typescript si occupa dell'esplicitezza nell'analisi del flusso di controllo e se c'è la possibilità che qualcosa vada storto, vi avvisa.
Qui in esempio nel primo se si otterrà un errore:
TS2339: La proprietà "battery" non esiste sul tipo "ClothingProduct". 2 volte, per batteria, e ariete proprietà.
Nel secondo blocco - altro, otterremo questo errore per dimensione proprietà. Naturalmente, si tratta solo di un esempio per mostrare come sindacati discriminati e analisi del flusso di controllo funziona in Typescript, quindi non stiamo facendo nulla di troppo complesso con quel codice.
Migrazione semplice e progressiva dall'JavaScript
Il codice JavaScript valido è allo stesso tempo codice Typescript valido, quindi è possibile migrare la propria base di codice passo dopo passo. Di solito, l'uso della modalità strict in Typescript è una buona pratica, ma in questo caso, dobbiamo iniziare con "strict": false in tsconfig.json e dovremmo anche impostare altre due opzioni.
"allowJs": true, // ci permetterà di usare file .js e il tipo non verrà controllato in essi
"skipLibCheck": true // salterà il controllo dei tipi nelle librerie che utilizziamo
Con queste opzioni, possiamo migrare da JS a TS passo dopo passo - file per file, cambiando semplicemente l'estensione da .js(x) a .ts(x) e l'aggiunta di tipi nei file. Utilizzando questo approccio, si possono evitare centinaia o migliaia di spaventosi errori di compilazione.
Sintesi
Penso che dovremmo usare Dattiloscritto spesso come possibileperché è davvero vantaggioso a lungo termine. Aiuta a mantenere i progetti, aumenta l'esperienza degli sviluppatori e rende la nostra base di codice più esplicita e affidabile.
Tuttavia, come sempre, ci sono delle eccezioni: ad esempio, per una semplice pagina di destinazione Se JavaScript viene utilizzato solo per alternare le classi o per un altro caso semplice, Typescript non ha senso. Inoltre, dobbiamo ricordare che per sfruttare appieno Typescript, dobbiamo imparare a usarlo a un livello sufficiente e questo può richiedere del tempo. Penso che sia comunque un investimento molto proficuo del vostro tempo.