← На главную

TypeScript 7 переписали на Go — ускорение до 10 раз

08.07.2026 16:06 · hackernews

Вышел TypeScript 7 — это нативная версия компилятора, переписанная на Go. Разработчики обещают ускорение в 10 раз. На практике — от 8x до 12x на полных сборках. VSCode собирается за 10.6 секунд вместо 125.7 (ускорение 11.9x), Sentry — за 15.7 секунд вместо 139.8 (8.9x). Потребление памяти тоже снизилось: на VSCode — на 18%, на Bluesky — на 26%.

Ключевое отличие нового кода — нативная скорость, многопоточность с разделяемой памятью и новые оптимизации. Работает это не только в командной строке (tsc), но и в редакторах. Для VS Code вышло отдельное расширение, которое подхватывает новый языковой сервер автоматически. Первая ошибка в коде VSCode теперь показывается за 1.3 секунды вместо 17.5. Visual Studio тоже включает TypeScript 7 по умолчанию на основе workspace. В остальных редакторах поддержка идёт через Language Server Protocol (LSP).

Команда провела масштабное тестирование с крупными компаниями. Slack сообщил, что новая версия сократила время проверки типов в CI с 7.5 минут до 1.25 минуты и убрала 40% времени из merge queue. Vanta получила ускорение до 9 раз на одном из крупных проектов. В Microsoft команда News Services сэкономила 400 часов в месяц ожидания сборок. Canva сократила время появления первой ошибки в редакторе с 58 до 4.8 секунды.

TypeScript 7 пока не поставляет API. Для совместимости с инструментами вроде typescript-eslint, которым нужен старый API, выпущен пакет @typescript/typescript6. Он даёт исполняемый файл tsc6, и его можно установить рядом с седьмой версией через алиасы npm. Ночные сборки скоро вернутся под стандартный пакет typescript с тегом next.

Новый компилятор распараллеливает парсинг, проверку типов и генерацию кода. Управлять этим можно флагами --checkers (по умолчанию 4, можно поднять до 8 для больших проектов) и --builders (для параллельной сборки проектов-ссылок). Есть флаг --singleThreaded для отладки или ограниченных сред. Полностью переписан режим --watch — теперь он использует портированный на Go файловый watcher из Parcel. Он эффективнее, стабильнее и не требует C++ toolchain.

Поддержка JavaScript и JSDoc переработана: она стала строже и единообразнее. Многие старые паттерны (например, @enum, @class, Closure-синтаксис) больше не работают. Также изменилась работа с Unicode в template literal types — символы вроде эмодзи теперь обрабатываются как целые единицы, а не как суррогатные пары.

Важный момент: для проектов на Vue, MDX, Astro, Svelte и Angular TypeScript 7 пока не подходит — для них нет стабильного программного API. Разработчики обещают исправить это в версии 7.1. А пока в таких проектах можно использовать седьмую версию для быстрой CLI-проверки, а для редактора оставить шестую. В VS Code для этого достаточно отключить расширение TypeScript 7.

Читать оригинал →