Teknik

TypeScript 7.0 kompilerar 10 gånger snabbare — Vue, Svelte och Angular måste vänta

Adrian Kessler

TypeScript-kompilatorn i VS Code brukade lägga 125 sekunder på att kontrollera en färsk kopia av redigerarens egen kodbas. TypeScript 7.0 gör samma jobb på 10,6 sekunder. Microsoft optimerade inte den gamla koden – man portade hela kompilatorns runtime från JavaScript till Go, vilket låser upp flerkärnig parallellism som en JavaScript-motor inte kan erbjuda.

Portningen är ingen nyskrivning från grunden. Microsofts ingenjörer beskriver typkontrolllogiken som strukturellt identisk med TypeScript 6.0 – samma regler, samma beteende, översatt till ett språk som kan sprida arbetet över CPU-kärnor. Teamet valde Go eftersom den ursprungliga funktionstunga JavaScript-kodbasen kunde mappas nästan ett-till-ett till Go-idiom. Den nya runtime introducerar också flaggor för explicit parallellismkontroll: med –checkers 8 på en modern arbetsstation förbättras VS Code-bygget 16,7 gånger jämfört med TypeScript 6.0. Slacks CI-typkontroll gick från 7,5 minuter till 1,25. Blueskys bygge gick från 24,3 sekunder till 2,8. Mönstret håller över kodbaser: vinsterna ökar i takt med projektstorleken, eftersom taket nu är hårdvaran, inte runtime.

TypeScript 7.0 levereras utan ett publikt programmeringsgränssnitt – det API som byggverktyg använder när de anropar kompilatorn inifrån sin egen kod. Varje större webbramverks malltypkontroll är beroende av det. Vues Volar-verktyg, Sveltes språktjänst, MDX, Angulars mallkontroll: inget av dem fungerar med TypeScript 7.0. Verktyg som ts-morph och ts-jest, som exponerar TypeScript-kompilatorns interna funktioner för refaktorering och testning, är också trasiga. Microsoft har bekräftat att ersättnings-API:t är planerat till TypeScript 7.1, väntat i oktober. Projekt som använder något av dessa ramverk eller verktyg bör inte uppgradera ännu.

Äldre projektkonfigurationer står inför en separat uppsättning hårda stopp. TypeScript 7.0 gör alternativ som version 6.0 avskrev till hårda byggfel: ES5-kompileringsmål, AMD- och SystemJS-modulformat, classic-modulupplösning och nyckelordet assert vid importsatser får alla bygget att misslyckas direkt. Den nya standardinställningen tsconfig.json laddar inte längre automatiskt @types-paket, vilket innebär att projekt som förlitade sig på omgivande typupptäckt utan att explicit deklarera sina typberoenden kommer att misslyckas tyst vid import. Microsoft tillhandahåller en typescript@npm:@typescript/typescript6-kompatibilitetsshim för projekt som behöver köra TS6-verktyg parallellt med den nya kompilatorn.

Projekt som klarar dessa hinder – vanliga Node.js- eller Deno-applikationer, webbläsarappar som inte bygger på ett ramverks mallsystem, och bibliotek utan beroenden av programmeringsgränssnitt – kan uppgradera med en enda package.json-ändring. Redigerarstödet följer samma uppdelning: VS Code har en dedikerad TypeScript 7-tillägg tillgänglig nu, och det inbyggda stödet genomgår sin migration till Language Server Protocol, som ersätter den äldre TSServer-designen. WebStorm och andra redigerare som också var beroende av TSServer arbetar fortfarande med den övergången.

TypeScript 7.1, som för närvarande är planerat till oktober 2026, kommer att leverera det nya kompilator-API som Vue, Svelte, Angular och MDX-verktyg behöver innan de kan migrera. När det anländer kommer prestandavinsterna från den 15 månader långa Go-portningen att nå hela ekosystemet. Fram till dess rekommenderar projektsidorna för Volar, SvelteKit och Angular att man håller sig till TypeScript 6.0.x.

Taggar: , , ,

Diskussion

Det finns 0 kommentarer.