Tecnologia

TypeScript 7.0 è 10 volte più veloce — Vue, Svelte e Angular devono aspettare

Adrian Kessler

Il compilatore TypeScript all’interno di VS Code impiegava 125 secondi per controllare una copia fresca del codebase dell’editor stesso. TypeScript 7.0 fa lo stesso lavoro in 10,6 secondi. Microsoft non ha ottimizzato il vecchio codice — ha portato l’intero runtime del compilatore da JavaScript a Go, sbloccando il parallelismo multi-core che un motore JavaScript non può offrire.

Il porting non è una riscrittura da zero. Gli ingegneri di Microsoft hanno descritto la logica di type-checking come strutturalmente identica a quella di TypeScript 6.0 — stesse regole, stesso comportamento, tradotta in un linguaggio in grado di distribuire il lavoro tra i core della CPU. Il team ha scelto Go perché la codebase originale, ricca di funzioni JavaScript, si mappava quasi uno a uno con gli idiomi di Go. Il nuovo runtime introduce anche flag per il controllo esplicito del parallelismo: passando –checkers 8 su una workstation moderna si ottiene un miglioramento di 16,7x rispetto a TypeScript 6. Il type-checking CI di Slack è passato da 7,5 minuti a 1,25. La build di Bluesky è passata da 24,3 secondi a 2,8. Il pattern vale per tutti i codebase: i guadagni aumentano con la dimensione del progetto, perché il limite ora è l’hardware, non il runtime.

TypeScript 7.0 viene distribuito senza un’API programmatica pubblica — l’interfaccia che gli strumenti di build usano quando chiamano il compilatore dal proprio codice. Ogni type-checker di template dei principali framework web dipende da essa. Il tooling Volar di Vue, il language service di Svelte, MDX, il template checker di Angular: nessuno di questi funziona con TypeScript 7.0. Anche strumenti come ts-morph e ts-jest, che espongono gli interni del compilatore TypeScript per refactoring e test, sono rotti. Microsoft ha confermato che l’API sostitutiva è prevista per TypeScript 7.1, atteso per ottobre. I progetti che utilizzano uno di questi framework o strumenti non dovrebbero ancora eseguire l’aggiornamento.

Le configurazioni di progetti più datati incontrano una serie separata di blocchi. TypeScript 7.0 trasforma le opzioni che la versione 6.0 aveva deprecato in errori di compilazione bloccanti: target di compilazione ES5, formati di modulo AMD e SystemJS, risoluzione classica dei moduli e la parola chiave assert nelle istruzioni di import causano tutti il fallimento immediato della build. Il nuovo tsconfig.json predefinito non carica più automaticamente i pacchetti @types, il che significa che i progetti che si affidavano alla scoperta ambientale dei tipi senza dichiarare esplicitamente le loro dipendenze di tipo falliranno silenziosamente al momento dell’import. Microsoft fornisce uno shim di compatibilità typescript@npm:@typescript/typescript6 per i progetti che necessitano di mantenere il tooling TS6 in esecuzione insieme al nuovo compilatore.

I progetti che superano questi ostacoli — applicazioni Node.js o Deno semplici, app browser non basate su un sistema di template di framework e librerie senza dipendenze API programmatiche — possono eseguire l’aggiornamento con una singola modifica a package.json. Il supporto editor segue la stessa suddivisione: VS Code ha un’estensione dedicata TypeScript 7 disponibile ora, e il supporto integrato sta completando la migrazione al Language Server Protocol, sostituendo il vecchio design TSServer. WebStorm e altri editor che dipendevano anch’essi da TSServer stanno ancora lavorando a questa transizione.

TypeScript 7.1, attualmente previsto per ottobre 2026, distribuirà la nuova API del compilatore di cui Vue, Svelte, Angular e MDX tooling hanno bisogno prima di poter migrare. Quando arriverà, i guadagni di performance del porting in Go durato 15 mesi raggiungeranno l’intero ecosistema. Fino ad allora, le pagine dei progetti per Volar, SvelteKit e Angular raccomandano di rimanere su TypeScript 6.0.x.

Tag: , , ,

Discussione

Ci sono 0 commenti.