Внутри переписывания TypeScript 7 на Go: ускорение без изменений в коде
Узнайте, как компилятор TypeScript 7 на основе Go обеспечивает в 8-12 раз более быструю сборку, почему так работает изменение архитектуры и как безопасно обновлять существующие проекты.
Теперь компилятор работает на движке на основе Go, вашему существующему коду не требуются изменения, а время сборки значительно сократилось
Крупные обновления инструментов, которые появляются лишь раз в несколько лет, обычно приводят к изменению вашей ежедневной рабочей процедуры, и TypeScript 7 соответствует этой тенденции. Microsoft пересоздала компилятор для значительно лучшей производительности — полные сборки выполняются в 8–12 раз быстрее — без необходимости вносить какие-либо изменения в функции языка, которые вы уже используете.
Что было фактически выпущено
TypeScript 7 появился 8 июля 2026 года, заменив компилятор на основе JavaScript на нативную реализацию на Go, созданную в рамках внутреннего проекта под названием Project Corsa. Стоит отметить, что это верная портация, а не полный переработанный вариант: логика проверки типов и семантика языка были переведены строчка за строчкой, поэтому ваши файлы с расширением .ts будут вести себя точно так же, как и раньше. Изменился только движок, выполняющий эту логику, а не сама логика.
Согласно внутренним тестам Microsoft, проведённым на собственном кодовом базисе VS Code, время загрузки проектов сократилось с почти одной минуты до примерно десяти секунд. Это главный результат. На практике задержка, которая раньше возникала при запуске команды tsc --watch после смены веток, практически исчезает.
Почему он настолько быстрее
Большая часть ускорения обусловлена двумя архитектурными изменениями.
- Компилируемый нативный код вместо работы через Node.js и движок V8
- Параллелизм с общей памятью, позволяющий выполнять парсинг, проверку типов и генерацию кода одновременно на нескольких ядрах CPU
В этой версии также представлены новые флаги --checkers и --builders, которые позволяют контролировать количество параллельных рабочих потоков, отвечающих за проверку типов и сборку проектов. Режим наблюдения также был переработан: теперь он использует механизм отслеживания файлов на основе Go, изначально разработанный для Parcel, что позволяет выполнять пошаговую пересборку значительно быстрее в крупных монорепозиториях.
Как произвести обновление
Установка нового компилятора происходит точно так же, как и раньше:
npm install -D typescript
npx tsc --version
# TypeScript 7.0
Не требуется миграция конфигурации, нет кодомодов для запуска, а также не нужно учитывать какие-либо изменения синтаксиса, могущие повлиять на работу. Если ваша команда уже использовала пакет @typescript/native-preview на этапе кандидата в релиз, то эта функциональность — основанная на бинарном файле tsgo — была включена обратно в стандартный пакет typescript, доступный через тег распространения next.
Следует обратить внимание на один момент: API программного компилятора ещё не полностью стабилизировалось. Если ваша схема сборки, конфигурация ESLint или пользовательские инструменты напрямую зависят от API TypeScript, а не просто вызывают tsc, пока избегайте написания нового кода, использующего такие интерфейсы, как createProgram. Командам, находящимся в такой ситуации, следует отложить полную замену до выхода версии 7.1, поскольку ожидается, что в этой версии будут устранены проблемы, возникшие во время работ по переходу в прошлом году.
Что это означает для проектов React и Next.js
Поскольку многие инструменты фреймворков построены на компиляторе TypeScript, они автоматически получают преимущества в плане производительности. Проверка типов во время сборки в Next.js, отзывчивость функции IntelliSense в редакторе в крупных библиотеках компонентов, созданных с использованием Redux или Tailwind, а также проверка типов в проектах монорепозитория становятся быстрее без необходимости вносить какие-либо изменения в код. Для команд, которые откладывали включение параметра strict: true, считая, что полная проверка типов по всему проекту слишком медленна, сейчас подходящее время, чтобы пересмотреть своё решение — вычислительные затраты на такую проверку снизились в десять раз.
Основные выводы
- TypeScript 7 переписывает компилятор, а не сам язык — проверка типов вашего кода происходит так же, но уже на новом движке на основе Go.
npm install, но избегайте использования программного API для создания собственных инструментов до выхода версии 7.1.Если раньше вы откладывали включение строгой проверки типов из-за длительного времени сборки, теперь у вас больше нет такого оправдания. Установите новую версию, запустите существующий набор тестов — и вы увидите снижение времени работы CI-пайплайна.
Связанные материалы
- TypeScript 6 и 7: улучшенная инференция, затем перепись на Go — Узнайте, как TypeScript 6 устранил ключевые проблемы с инференцией и модернизировал стандартные настройки, что создало основу для полной переписи компилятора TypeScript 7 на языке Go.
- Компилятор TypeScript на Go и нативная экспекуция: руководство по миграции — Узнайте, как компилятор TypeScript на Go и нативная экспекуция в Node.js повлияют на кодовые базы React и Next.js, а также что необходимо исправить в вашем tsconfig прямо сейчас.