A Microsoft bejelentette a TypeScript 7.0 kiadását, amely a nyelv történetének egyik legjelentősebb frissítése. A korábbi verziókkal ellentétben most nem az új szintaktikai funkciók hosszú listája a lényeg, hanem a sebesség.
A legfontosabb újdonság, hogy az új verzió egy natív TypeScript fordítót és eszközkészletet vezet be, amelyet Go nyelven írtak újra. A Microsoft szerint az új megvalósítás natív kódra jellemző teljesítményt, megosztott memóriás több szálú futást és számos optimalizálást hoz, amelyek nagy, valós projektek esetén jellemzően 8–12-szer gyorsabb teljes buildet eredményeznek.
A Microsoft szerint a TypeScript 7.0 fejlesztésekor fontos szempont volt, hogy az új fordító kompatibilis maradjon a meglévővel, miközben az implementáció natív kódra vált. A Go-alapú portot a lehető leghűebben írták meg az eredeti codebase alapján, ahol csak lehetett, megtartva a felépítést és a logikát, hogy az eredmények következetesek maradjanak a régi és az új fordító között.
A teljesítménymutatók kifejezetten meggyőzőek. A Microsoft mérései szerint a VS Code codebase buildideje TypeScript 6.0-val 125,7 másodperc volt, TypeScript 7.0-val viszont 10,6 másodpercre csökkent, ami 11,9-szeres gyorsulás. A Sentry 139,8 másodpercről 15,7 másodpercre esett vissza, míg a Bluesky, a Playwright és a tldraw 7,7–8,9-szeres gyorsulást ért el.
A memóriahasználat is javult. Ugyanebben a tesztkészletben a TypeScript 7.0 több nagy projekt esetén is kevesebb összesített memóriát használt, 6–26% közötti csökkenéssel.
Az editorok reakcióideje szintén sokat javult. A Microsoft szerint korábban egy hibát tartalmazó fájl megnyitása a VS Code codebase-ben körülbelül 17,5 másodpercig tartott, mire megjelent az első hiba. TypeScript 7.0-val ez az idő 1,3 másodperc alá csökkent, vagyis több mint 13-szor gyorsabb lett a folyamat.
Az új kiadás párhuzamosítási beállításokat is bevezet. A TypeScript 7.0 számos buildlépést képes párhuzamosan futtatni, többek között a parszolást, a típusellenőrzést és a kódgenerálást. Alapértelmezés szerint négy típusellenőrző worker fut, de a fejlesztők ezt az új --checkers flaggel módosíthatják. Több CPU-maggal rendelkező rendszereken a checkers értékének növelése tovább javíthatja a teljesítményt, általában nagyobb memóriahasználat árán.
Monorepók és project references használata esetén a TypeScript 7.0 új --builders flaget ad, amellyel egyszerre több project reference builder is futhat. A Microsoft ugyanakkor figyelmeztet, hogy a --checkers és a --builders kölcsönhatására oda kell figyelni, mert ha mindkettőt növelik, az megsokszorozhatja az aktív típusellenőrző workerek számát.
Megjelent egy új --singleThreaded opció is, amellyel teljesen le lehet tiltani a párhuzamosítást. Ez hasznos lehet debugging közben, a TypeScript verziók közötti viselkedés összehasonlítására, vagy olyan korlátozott környezetekben, ahol nem kívánatosak a plusz worker folyamatok.
Fontos fejlesztés a teljesen újraírt --watch mód is. A TypeScript 7.0 egy új fájlfigyelő alapra vált, amely a Parcel watcherére épül, Go nyelvre portolva.
Érdemes figyelni néhány konfigurációs és kompatibilitási változásra is. A TypeScript 7.0 átveszi a TypeScript 6.0 újabb alapértelmezéseit, és néhány korábban elavultnak jelölt opciót mostantól hibaként kezeli. Különösen fontos, hogy a strict mostantól alapértelmezés szerint engedélyezett, a module alapértelmezett értéke esnext, a stableTypeOrdering pedig alapértelmezetten be van kapcsolva, és nem lehet kikapcsolni.
A teljesítmény- és konfigurációs változtatásokon túl a TypeScript 7.0 természetesebben kezeli az Unicode kódpontokat a template literal típusokban. Korábban bizonyos, surrogate párokkal ábrázolt Unicode karakterek úgy is kettéválhattak, ami ugyan technikailag összhangban volt a JavaScript UTF-16 indexelésével, de általában nem ezt várták a fejlesztők. A TypeScript 7.0 ezeket az eseteket mostantól természetesebben kezeli a típuslevezetés során.
További részletek a hivatalos bejelentésben olvashatók a Microsoft Dev Blogs oldalán.

