Вышел TypeScript 7.0: native-компилятор на Go ускоряет сборку в 10 раз
Корпорация Microsoft официально представила TypeScript 7.0. Это обновление стало крупнейшим технологическим прорывом в истории языка с момента его создания. Главное изменение скрыто под капотом: компилятор TypeScript, который более десяти лет разрабатывался на самом же TypeScript и исполнялся в среде Node.js, полностью переписан на язык Go.
Этот шаг выводит производительность сборки и проверки типов на принципиально новый уровень, устраняя один из главных барьеров при разработке крупных веб-приложений. Нативная компиляция в бинарный код, эффективная конкурентность и оптимизированная работа с памятью превращают TypeScript 7.0 в один из самых быстрых инструментов современной веб-разработки.
Почему Go заменил JavaScript в компиляторе
Изначальное решение писать компилятор TypeScript на TypeScript было логичным с точки зрения развития языка, но создавало серьезные ограничения для производительности на крупных проектах. Исполнение компилятора внутри движка V8 сопровождалось высокими накладными расходами:
- Медленный запуск виртуальной машины V8.
- Значительные затраты ресурсов на автоматическую сборку мусора при обработке огромных деревьев абстрактного синтаксиса.
- Однопоточная природа JavaScript, мешавшая полноценно использовать преимущества многоядерных современных процессоров.
Язык Go предоставил компилятору возможность работать напрямую с системными ресурсами. Скомпилированный в нативный бинарный код, новый компилятор запускается мгновенно. Среда выполнения Go обеспечивает эффективную параллельную обработку данных с помощью легковесных потоков, что позволило распределить проверку типов и анализ проектных связей по всем доступным ядрам процессора.
Впечатляющие результаты тестов производительности
Прирост скорости сборки на реальных масштабных проектах оказался колоссальным:
- VS Code: Время сборки проекта сократилось с 125,7 секунды на TypeScript 6 до невероятных 10,6 секунды на TypeScript 7. Это означает ускорение компиляции в 11,9 раз.
- Sentry: Сборка проекта ускорилась в 8,9 раз — время упало со 139,8 секунды до 15,7 секунды.
- Потребление памяти: На крупных кодовых базах использование оперативной памяти сократилось на 10-25%. Это снижает вероятность падения CI-сборщиков из-за нехватки памяти.
Для крупных репозиториев и монорепозиториев проверка типов и отзывчивость редакторов кода были одной из ключевых статей расходов времени. Ускорение компиляции почти в 10 раз превращает проверку типов из утомительного ожидания в CI-пайплайне в мгновенную обратную связь для инженера.
Экосистема и вопросы совместимости
Поскольку TypeScript используется не только для компиляции файлов, но и интегрирован во множество инструментов разработчика (таких как линтеры, плагины для сборщиков webpack, Vite, Rspack, IDE-расширения), обратная совместимость имела критическое значение. Чтобы избежать одномоментного разрушения всей экосистемы инструментов, Microsoft внедрила специальный пакет совместимости @typescript/typescript6.
Этот слой совместимости позволяет старым инструментам, ожидающим внутренние JS-структуры TypeScript 6, продолжать работать бок о бок с новым быстрым компилятором TypeScript 7.0 на Go.
Пример настройки псевдонимов в файле package.json для сохранения обратной совместимости:
{
"devDependencies": {
"typescript": "npm:@typescript/typescript7@latest",
"@typescript/typescript6": "npm:[email protected]"
}
}
Благодаря такой конфигурации старые библиотеки будут использовать проверенную ветку TypeScript 6, в то время как основная сборка проекта перейдет на высокопроизводительную седьмую версию компилятора.
Влияние на процессы CI/CD и разработку
Переход компилятора на Go снижает общие расходы на облачную инфраструктуру. Быстрые проверки типов означают:
- Сокращение времени работы раннеров в облачных системах интеграции (GitHub Actions, GitLab CI).
- Снижение времени ожидания слияния веток в репозитории (merge time).
- Возможность запускать полноценную проверку типов на локальных pre-commit хуках без раздражения разработчиков длительным ожиданием.
С практической точки зрения это кардинально меняет ежедневный рабочий процесс разработчиков. Когда компиляция проекта занимает полторы или две минуты, инженер неизбежно теряет концентрацию, переключается на чтение новостей или проверку почты, что разрушает состояние потока. Снижение времени сборки до 10-15 секунд позволяет проводить верификацию изменений практически непрерывно, повышая общую эффективность написания кода и сокращая утомляемость от рутинных процессов.
Как перейти на новую версию
Ранние экспериментальные версии компилятора распространялись под именем @typescript/native-preview и требовали использования сторонней утилиты. С релизом TypeScript 7.0 RC и финальной версии native-компилятор доступен стандартно через обычный пакет.
При запуске нового бинарного файла компилятора tsc в терминале вы можете передавать те же стандартные флаги конфигурации сборки, что и в предыдущей версии:
# Проверка типов в фоновом режиме наблюдения с отслеживанием изменений
tsc --watch --noEmit
Практические рекомендации по обновлению для команд разработчиков:
- Запустите локальное тестирование компиляции проекта, чтобы измерить разницу во времени до и после обновления.
- Проверьте поведение редакторов кода на крупных проектах с использованием ссылок на проекты.
- Проведите аудит инструментов, которые используют API компилятора TypeScript как библиотеку. При необходимости настройте алиасы в пакетном менеджере для пакета совместимости.
- Сохраняйте возможность быстрого отката на TypeScript 6 на случай непредвиденных проблем совместимости с конфигурацией линтеров и сборщиков вашей кодовой базы.
Внедрение нативного компилятора в TypeScript 7.0 — это важный шаг в сторону снижения времени сборки проектов, который поможет сократить расходы на инфраструктуру CI/CD и повысить общую удовлетворенность разработчиков от скорости работы их инструментов. Команде Microsoft удалось сделать масштабный скачок вперед, сохранив при этом совместимость со сложившейся богатой экосистемой веб-разработки.

