TypeScript 7.0 стал стабильным: компилятор переписан на Go и работает в 10 раз быстрее

8 июля Microsoft выпустила TypeScript 7.0 в GA. Компилятор и language server портированы на Go: типизация VS Code — 125,7 с против 10,6 с. Цена — жёсткие breaking changes и отсутствие стабильного API, из-за чего Vue, Svelte и Angular пока в стороне.

DB
DBG · по материалам Microsoft TypeScript DevBlog
0

8 июля Microsoft объявила о выходе TypeScript 7.0 в общую доступность. Это финал проекта, который в марте 2025 года анонсировали под кодовым именем Corsa: компилятор и language service целиком портированы с TypeScript (который сам себя компилировал в JavaScript) на Go. Не переписаны с нуля — именно портированы, поэтому семантика проверки типов осталась идентичной.

Цифры выглядят почти неприлично. Проверка типов кодовой базы VS Code упала со 125,7 секунды до 10,6 — почти двенадцатикратное ускорение. Sentry: 139,8 → 15,7 секунды. Microsoft описывает типичный выигрыш на полной сборке как 8–12x, и берётся он из трёх источников — нативный код вместо JS, параллелизм на разделяемой памяти и новые оптимизации. Потребление памяти тоже снизилось, на 6–26 % в зависимости от проекта. Отдельно переработан language server: количество падающих команд редактора сократилось более чем на 80 %, крашей сервера — более чем на 60 %. Инженеры Slack отчитались, что тайпчек в CI ужался с ~7,5 минуты до одной, а время в merge queue сократилось на 40 %.

За скорость платят совместимостью. TypeScript 7.0 включает по умолчанию strict: true, переводит module на esnext, делает types пустым массивом вместо автопоиска типов, и выбрасывает целый пласт легаси: таргет ES5, модульные системы AMD/UMD/SystemJS, baseUrl, JSDoc в стиле Closure. И — главный практический затык — в 7.0 нет стабильного программного API. Всё, что встраивает компилятор в себя, оказалось за бортом: Vue, Svelte, Astro, MDX, проверка типов в шаблонах Angular, typescript-eslint. Новый API обещают в 7.1.

Именно поэтому TypeScript 6.0, вышедший ранее, сыграл роль моста: он ввёл те же breaking changes, но в мягком режиме, а 7.0 просто сделал их обязательными.

Что делать. Если у вас Vue, Svelte, Astro или Angular с типизацией шаблонов — сидите на 6.x и ждите 7.1, миграция сейчас просто не соберётся. Всем остальным разумен путь через две ступени: сначала честно поднять проект до TypeScript 6.0 и вычистить всё, что он ругает, и только потом ставить 7.0. Прямой прыжок с 5.x на 7.0 упрётся в strict и умерший baseUrl одновременно. Для параллельной установки есть npm i -D typescript@npm:@typescript/typescript6 — можно держать оба компилятора и гонять тайпчек в CI дважды, пока не убедитесь, что диагностики совпадают. Из новых флагов пригодятся --checkers N (по умолчанию четыре воркера проверки типов) и --builders N; на слабых или сильно загруженных CI-раннерах имеет смысл проверить --singleThreaded — на маленьких проектах накладные расходы на параллелизм иногда съедают выигрыш.

Комментарии

TypeScript 7.0 стал стабильным: компилятор переписан на Go и работает в 10 раз быстрее | DBG