Teknologi

TypeScript 7.0 kompilerer 10 gange hurtigere — Vue, Svelte og Angular må vente

Adrian Kessler

TypeScript-kompileren i VS Code brugte tidligere 125 sekunder på at tjekke en frisk kopi af editorens egen kodebase. TypeScript 7.0 klarer samme opgave på 10,6 sekunder. Microsoft optimerede ikke den gamle kode – de portede hele kompilerings-runtimen fra JavaScript til Go og låste dermed op for flerkernet parallelisering, som en JavaScript-motor ikke kan levere.

Porten er ikke en grundlæggende omskrivning. Microsofts ingeniører beskrev typekontrol-logikken som strukturelt identisk med TypeScript 6.0 – samme regler, samme opførsel, oversat til et sprog, der kan sprede arbejdet over CPU-kerner. Holdet valgte Go, fordi den oprindelige funktionstunge JavaScript-kodebase næsten én-til-én kunne oversættes til Go-idiomer. Den nye runtime introducerer også flag til eksplicit kontrol af parallelisering: med --checkers 8 på en moderne arbejdsstation forbedres VS Code-bygget 16,7 gange i forhold til TypeScript 6.0. Slacks CI-typekontrol faldt fra 7,5 minutter til 1,25. Blueskys byg gik fra 24,3 sekunder til 2,8. Mønstret holder på tværs af kodebaser: gevinsterne vokser, jo større projektet er, fordi loftet nu er hardware, ikke runtime.

TypeScript 7.0 leveres uden et offentligt programmatisk API – det grænsefladelag, som byggeværktøjer bruger, når de kalder kompileren inde fra deres egen kode. Hvert større webrammeværks skabelon-typekontrol afhænger af det. Vue’s Volar-værktøj, Sveltes sprogtjeneste, MDX, Angulars skabelontjek: intet af det virker med TypeScript 7.0. Værktøjer som ts-morph og ts-jest, der eksponerer TypeScript-kompilerens interne funktioner til refaktorering og test, er også brudt. Microsoft har bekræftet, at erstatnings-API’en er planlagt til TypeScript 7.1, forventet i oktober. Projekter, der bruger nogle af disse rammeværker eller værktøjer, bør endnu ikke opgradere.

Ældre projektkonfigurationer står over for en separat række hårde stop. TypeScript 7.0 gør muligheder, som version 6.0 afskrev, til hårde byggefejl: ES5-kompileringsmål, AMD- og SystemJS-modulformater, classic module resolution og assert-nøgleordet på import-sætninger får alle bygget til at fejle med det samme. Den nye standard-tsconfig.json indlæser ikke længere automatisk @types-pakker, hvilket betyder, at projekter, der stolede på omgivende typeopdagelse uden eksplicit at erklære deres typeafhængigheder, vil fejle lydløst ved importtid. Microsoft stiller en typescript@npm:@typescript/typescript6-kompatibilitets-shim til rådighed for projekter, der har brug for at køre TS6-værktøjer side om side med den nye kompiler.

Projekter, der klarer disse forhindringer – almindelige Node.js- eller Deno-applikationer, browser-apps ikke bygget på et rammeværks-skabelonsystem og biblioteker uden afhængigheder af programmatiske API’er – kan opgradere med en enkelt ændring i package.json. Editor-understøttelse følger samme opdeling: VS Code har en dedikeret TypeScript 7-udvidelse tilgængelig nu, og den indbyggede understøttelse er ved at fuldføre sin migrering til Language Server Protocol, som erstatter det ældre TSServer-design. WebStorm og andre editorer, der også var afhængige af TSServer, arbejder stadig på overgangen.

TypeScript 7.1, der aktuelt er planlagt til oktober 2026, vil levere det nye kompiler-API, som Vue, Svelte, Angular og MDX-værktøjer har brug for, før de kan migrere. Når det ankommer, vil præstationsgevinsterne fra den 15 måneder lange Go-port nå hele økosystemet. Indtil da anbefaler projektsiderne for Volar, SvelteKit og Angular at holde sig til TypeScript 6.0.x.

Tags: , , ,

Debat

Der er 0 kommentarer.