L'azienda Microsoft ha rilasciato TypeScript 7.0, un linguaggio destinato allo sviluppo di web application che potenzia JavaScript, insieme agli strumenti correlati. Questa versione è significativa perché introduce un nuovo compilatore chiamato typescript-go (tsgo), che trasforma il codice TypeScript in JavaScript. Questo compilatore è stato riscritto in Go ed è ora considerato pronto per la costruzione di progetti operativi. Gli strumenti sono distribuiti sotto licenza Apache 2.0, e lo sviluppo avviene in un repository pubblico su GitHub. Le specifiche del linguaggio sono aperte e pubblicate nell'ambito dell'Open Web Foundation Specification Agreement.
Il vecchio compilatore TypeScript era scritto in TypeScript, il che creava problemi di scalabilità in progetti molto grandi. Durante il caricamento e la verifica del codice in tali progetti all'interno di ambienti di sviluppo integrati si verificavano notevoli ritardi, costringendo gli sviluppatori a sacrificare la facilità di sviluppo per ridurre le latenze, disattivando le funzionalità di verifica del codice negli editor. C'era anche una crescente necessità di strumenti da riga di comando nel ecosistema.
Nel nuovo compilatore, la velocità di compilazione è stata notevolmente aumentata, il consumo di memoria ridotto e una nuova architettura è stata implementata, consentendo di parallelizzare l'esecuzione di molte operazioni, inclusi il parsing, la verifica dei tipi e la generazione del codice. Il parsing e la generazione del codice vengono ora eseguiti in modo indipendente per file diversi. Inoltre, è stato fornito uno strumento compatto da riga di comando, tsc, che consente di compilare rapidamente il codice per verificarne il funzionamento.
Per funzionalità, il linguaggio TypeScript 7 è simile a TypeScript 6 e le versioni di questi rami sono intercambiabili, con i compilatori che possono coesistere all'interno dello stesso sistema. Tutte le impostazioni predefinite necessarie per il ramo TypeScript 7 sono state modificate nella versione TypeScript 6, la quale ha anche deprecato funzionalità del linguaggio non compatibili con TypeScript 7. Teoricamente, qualsiasi codice TypeScript compilato con TypeScript 6.0 dovrebbe compilarsi anche con TypeScript 7.0 impostando la modalità stableTypeOrdering e senza utilizzare i flag ignoreDeprecations. Per un certo periodo, le basi di codice TypeScript 6.x e TypeScript 7.x saranno supportate in parallelo e coesisteranno, fino a quando il ramo TypeScript 7 non raggiungerà uno stato maturo, pronto a sostituire completamente il vecchio strumento.
Per quanto riguarda le prestazioni del compilatore, rispetto al ramo precedente, la velocità di compilazione in TypeScript 7 è aumentata con un fattore di 11.9 durante la ricompilazione di vscode, 8.9 per sentry, 8.7 per bluesky, 8.7 per playwright e 7.7 per tldraw. Allo stesso tempo, il consumo di memoria è diminuito del 18% durante la compilazione di vscode, 6% per sentry, 26% per bluesky, 11% per playwright e 15% per tldraw. L'esecuzione in modalità di controllo dei tipi in TypeScript 7 avviene da 10.6 a 16.7 volte più velocemente rispetto a TypeScript 6.

Il linguaggio Go è stato scelto per la scrittura di un nuovo compilatore poiché presenta una sintassi e una struttura del codice simili a quelle di TypeScript, il che ha consentito di mantenere i modelli esistenti durante il porting e ha semplificato il trasferimento delle modifiche tra le codebase. Allo stesso tempo, il linguaggio Go offre elevate prestazioni, si sviluppa tenendo conto della programmazione multithreading, dimostra un'efficace operatività su sistemi multi-core e dispone di strumenti integrati per proteggere da problemi di gestione della memoria.
Il linguaggio TypeScript estende le capacità di JavaScript, rimanendo completamente retrocompatibile, semplificando così la migrazione delle applicazioni esistenti a TypeScript. L'applicazione finale scritta in TypeScript viene compilata in JavaScript standard, che può essere eseguito in qualsiasi moderno browser web o utilizzato con le piattaforme Node.js, Bun e Deno. È possibile utilizzare librerie JavaScript esistenti nei programmi scritti in TypeScript. Rispetto a JavaScript, TypeScript si distingue per la possibilità di dichiarare esplicitamente i tipi e supporta l'uso di classi complete. La tipizzazione statica aiuta a evitare molti errori durante lo sviluppo, consente di applicare tecniche di ottimizzazione supplementari, semplifica il debug e rende il codice più leggibile e facile da modificare e mantenere.
Fonte: opennet.ru
