Microsoft ha presentato TypeScript Native Previews. L'anteprima di una nuova implementazione nativa del compilatore TypeScript basata sul linguaggio Go. Grazie a questo porting sono state già registrate prestazioni molto elevate, con compilazioni fino a 10 volte più veloci rispetto all'implementazione attuale basata su JavaScript.
Cosa sono le TypeScript Native Previews
La TypeScript Native Preview è un porting nativo del compilatore TypeScript distribuito come anteprima per i test da parte degli sviluppatori. A differenza del compilatore classico, che è basato su Node.js ed è stato scritto in JavaScript, la versione nativa in Go può sfruttare il multi-threading. Supera così i limiti del runtime JavaScript a thread singolo.
Queste anteprime vengono aggiornate quotidianamente e confluiranno nella release stabile di TypeScript 7. La novità principale è la drastica riduzione dei tempi di compilazione e di verifica dei tipi. In un caso reale la codebase di Sentry è passata da oltre un minuto a circa 7 secondi per l'analisi completa dei tipi. Un balzo del genere si traduce in errori rilevati quasi in tempo reale e build molto più rapide.
TypeScript Native viene distribuito tramite un package npm. Installando @typescript/native-preview
come dipendenza di sviluppo si ottiene un eseguibile chiamato tsgo
da usare al posto del tradizionale tsc
. La CLI funziona in modo analogo a quest'ultimo e supporta la compilazione della maggior parte dei progetti. Una volta installato il pacchetto, si può eseguire ad esempio il comando:
npx tsgo -p tsconfig.json
per lanciare la compilazione con il nuovo compilatore.
Un'estensione sperimentale per Visual Studio Code
Oltre alla CLI è disponibile un'estensione sperimentale per Visual Studio Code chiamata TypeScript Native Preview che abilita il nuovo servizio di linguaggio nell'editor. Dopo l'installazione va abilitata manualmente tramite il comando
TypeScript Native Preview: Enable (Experimental)
nella Command Palette.
Il compilatore nativo sfrutta il parallelismo multi-core per ridurre i tempi di compilazione su codebase estese e gli errori vengono rilevati quasi all'istante. Anche se incompleta questa anteprima permette di prepararsi a TypeScript 7 testando subito la compatibilità dei propri progetti e segnalando eventuali problemi. Il team di Microsoft sta aggiungendo le funzionalità mancanti, come ad esempio il supporto all'analisi di JSX e dei file JavaScript con JSDoc, tramite aggiornamenti frequenti.