TypeScript 7.0 получил собственный компилятор на Go: что изменилось и почему это важно
Microsoft представила TypeScript 7.0 — одно из самых масштабных обновлений языка программирования за последние годы. В отличие от большинства предыдущих релизов, разработчики сделали основной акцент не на новых возможностях синтаксиса, а на фундаментальном повышении производительности. Главной особенностью новой версии стал полностью переработанный компилятор, реализованный на языке Go, благодаря чему время сборки крупных проектов может сократиться в несколько раз, а использование оперативной памяти становится значительно эффективнее.
Подобное изменение особенно важно для современных проектов, содержащих миллионы строк кода. Чем быстрее выполняется сборка, тем меньше времени разработчики тратят на ожидание результатов проверки и тем быстрее могут выпускать новые версии программного обеспечения.
Новый компилятор на Go
Главное нововведение TypeScript 7.0 — нативная реализация компилятора и сопутствующих инструментов на языке Go. Вместо выполнения большого количества операций внутри JavaScript-движка теперь используется полноценное нативное приложение, способное эффективнее работать с памятью и использовать возможности современных многоядерных процессоров.
При разработке нового компилятора Microsoft стремилась сохранить полную совместимость с предыдущими версиями TypeScript. Архитектура, алгоритмы и логика работы максимально повторяют оригинальную реализацию, благодаря чему большинство существующих проектов смогут перейти на новую версию без существенных изменений.
Рост производительности в реальных проектах
Наиболее впечатляющие изменения касаются скорости работы. По данным Microsoft, компиляция популярных открытых проектов выполняется в среднем в 8–12 раз быстрее по сравнению с TypeScript 6.0.
- VS Code — ускорение с 125,7 до 10,6 секунды;
- Sentry — со 139,8 до 15,7 секунды;
- Bluesky — ускорение почти в 8 раз;
- Playwright — увеличение скорости более чем в 8 раз;
- tldraw — ускорение почти в 9 раз.
Такие результаты означают, что даже очень крупные корпоративные проекты смогут существенно сократить время непрерывной интеграции (CI/CD), а разработчики будут быстрее получать обратную связь после внесения изменений.
Снижение потребления памяти
Не менее важным преимуществом стало уменьшение использования оперативной памяти. В проведенных тестах новая версия расходовала на 6–26% меньше памяти в зависимости от структуры проекта и количества файлов.
Экономия ресурсов особенно заметна на серверах сборки, где одновременно выполняются десятки процессов, а также на рабочих станциях разработчиков с ограниченным объемом оперативной памяти.
Более быстрый отклик редакторов
TypeScript активно используется не только во время сборки, но и внутри современных редакторов кода. Именно он отвечает за подсветку ошибок, автодополнение, навигацию по проекту и интеллектуальные подсказки.
В TypeScript 7.0 скорость появления диагностических сообщений значительно увеличилась. Например, при открытии большого проекта VS Code первое сообщение об ошибке появляется примерно за 1,3 секунды вместо прежних 17,5 секунды. Для разработчиков это означает практически мгновенную реакцию среды разработки даже при работе с очень большими репозиториями.
Новая система многопоточности
Еще одним серьезным изменением стало полноценное распараллеливание процесса компиляции. Теперь различные этапы могут выполняться одновременно, эффективно используя несколько процессорных ядер.
- параллельный синтаксический анализ;
- одновременная проверка типов;
- параллельная генерация кода;
- настройка количества потоков через параметр
--checkers; - параллельная сборка проектов с помощью
--builders.
По умолчанию используется четыре потока проверки типов, однако на мощных серверах этот показатель можно увеличить. Следует учитывать, что повышение количества потоков приводит к дополнительному расходу памяти.
Обновленный режим Watch
Разработчики полностью переработали режим --watch, который постоянно отслеживает изменения файлов проекта. Теперь используется новая система наблюдения за файловой системой, основанная на watcher из Parcel и портированная на Go.
Благодаря этому повторная компиляция после изменения исходного кода происходит быстрее, а количество ложных срабатываний и задержек становится меньше.
Изменения совместимости
В новой версии появились и изменения, которые необходимо учитывать при обновлении существующих проектов.
strictтеперь включен по умолчанию;moduleпо умолчанию использует значениеesnext;stableTypeOrderingактивирован постоянно;- ряд устаревших параметров конфигурации стал ошибками компиляции.
Перед обновлением рекомендуется проверить конфигурацию tsconfig.json, чтобы избежать неожиданных ошибок во время миграции.
Улучшенная работа с Unicode
TypeScript 7.0 также совершенствует обработку символов Unicode в шаблонных литералах. Теперь символы, состоящие из суррогатных пар UTF-16, интерпретируются значительно корректнее при выводе типов. Это делает поведение языка более естественным и уменьшает вероятность появления труднообнаружимых ошибок при работе с многоязычными приложениями.
Почему выпуск TypeScript 7.0 можно считать историческим
На протяжении многих лет производительность TypeScript постепенно улучшалась, однако архитектура компилятора оставалась практически неизменной. Переход на нативную реализацию открывает возможности для дальнейшей оптимизации, более эффективного использования процессоров с большим количеством ядер и развития инструментов разработки.
Особенно заметную выгоду получат крупные компании, поддерживающие монорепозитории, облачные сервисы и масштабные веб-приложения. Сокращение времени сборки даже на несколько минут ежедневно способно существенно повысить общую производительность команд разработки.
Дополнительные сведения см. в официальном объявлении на блоге разработчиков Microsoft.
Выводы
TypeScript 7.0 является одним из самых значимых обновлений за всю историю языка. Вместо расширения синтаксиса Microsoft сосредоточилась на повышении эффективности всей экосистемы. Новый компилятор на Go обеспечивает многократное ускорение сборки, снижает потребление памяти, улучшает работу редакторов кода и предлагает новые механизмы параллельной обработки. При этом разработчики сохранили высокий уровень совместимости с существующими проектами, что делает переход на новую версию максимально комфортным.
Часто задаваемые вопросы
Что стало главным нововведением TypeScript 7.0?
Главной особенностью стал новый нативный компилятор, написанный на языке Go, который значительно ускоряет процесс сборки и проверки проектов.
Насколько быстрее работает новая версия?
По данным Microsoft, скорость полной сборки крупных проектов увеличивается в среднем в 8–12 раз, а в некоторых сценариях прирост достигает почти 12-кратного значения.
Потребуется ли переписывать существующий код?
Нет. Новый компилятор разрабатывался с учетом совместимости с предыдущими версиями TypeScript, поэтому большинство проектов смогут обновиться без серьезных изменений.
Для чего предназначены параметры —checkers и —builders?
Они позволяют управлять уровнем распараллеливания проверки типов и одновременной сборкой нескольких проектов, что особенно полезно для крупных монорепозиториев.
Стоит ли переходить на TypeScript 7.0 сразу после выхода?
Если проект активно развивается и время сборки является важным фактором, обновление способно существенно ускорить процесс разработки. Однако перед переходом рекомендуется проверить совместимость конфигурации и протестировать сборку в тестовом окружении.
Редактор: AndreyEx
Важно: Данная статья носит информационный характер. Автор не несёт ответственности за возможные сбои или ошибки, возникшие при использовании описанного программного обеспечения.
