Вышел tsc-ts — экспериментальный компилятор TypeScript, написанный на TypeScript
tsc-ts — экспериментальный перенос компилятора TypeScript 7.0.2 на TypeScript. Пакет можно установить через npm и проверить на собственном проекте; сравнения с tsgo не гарантируют идентичную работу на любой кодовой базе.
17 октября 2026 года на Hacker News опубликован материал о tsc-ts — экспериментальном переносе компилятора TypeScript 7.0.2, известного как TypeScript-Go или tsgo, на TypeScript. Полученный код собирают в нативный исполняемый файл с помощью scriptc. Разработчик может установить пакет через npm и запустить его на своём проекте. Сравнения с tsgo дают ориентир, но не заменяют такую проверку.
Что перенесли и как проверяли
Пакет tsc-ts содержит компилятор, команду для терминала и сервер API. После установки через npm компилятор можно запустить с указанием tsconfig.json. При таком запуске используется нативный файл из необязательной зависимости, соответствующей платформе. В репозитории есть и эталонные сборки tsgo: с их результатами сравнивают работу перенесённого компилятора.
Перенос охватывает сканирование и разбор кода, построение синтаксического дерева, связывание символов, разрешение модулей и проверку типов. Компилятор также обрабатывает настройки проекта, выдаёт диагностику, создаёт JavaScript и файлы деклараций типов. Проверены режимы --build, --incremental и --watch. Речь не только о том, сможет ли компилятор прочитать исходный файл: сравнивают и то, что он сообщает и записывает на выходе.
Как указано в README репозитория tsc-ts, для сравнений используют корпус тестов TypeScript: около 12 500 файлов и 17 000 тестовых единиц после разделения случаев с несколькими файлами. Результаты работы сканера совпали с tsgo на всех файлах корпуса, парсера и дерева — на всех тестовых единицах, разрешения модулей — на всех запросах. Для проверки типов указано совпадение диагностик по всем файлам.
Отдельно сопоставляли вывод файлов. Для JavaScript использовали 39 наборов настроек: результаты совпали на всех сравниваемых единицах. Для деклараций типов совпадение заявлено по всем единицам; сценарии сборки и инкрементального режима тоже сопоставили с tsgo. Это результаты перечисленных проверок, а не обещание одинаковой работы на любом проекте.
В репозитории предусмотрены команды для повторного сравнения с tsgo и для замера времени работы относительно tsgo и JavaScript-компилятора TypeScript. Итоговых чисел о скорости в представленном материале нет. По одной только полноте тестового корпуса нельзя сделать вывод, быстрее ли новый вариант на конкретной кодовой базе.
API, сборка и границы проекта
Режим --api работает через стандартные потоки ввода и вывода. Он предоставляет тот же API, что и tsc --api версии 7.0.2, поэтому инструмент, обращающийся к этому интерфейсу, может запускать tsc-ts вместо него. В материале таким инструментом назван scriptc. Ответы сервера сравнивают с ответами tsc --api по отдельности; также проверяют сборку одних и тех же программ через scriptc с обоими компиляторами.
Поддерживаются методы сервиса языка для получения подсказок, JSDoc-тегов, комментариев документации и сведений об использовании символов. При этом методы запуска профиля CPU и сохранения профиля памяти не поддерживаются. Если подсказкам нужны автоматические импорты, сервер сообщает об этой необходимости, как и tsc --api. Поэтому совместимость API не следует понимать как наличие каждого возможного метода.
Для сборки из исходников нужны Node.js 24+ с npm, Go 1.26, macOS, Linux или Windows в качестве среды для scriptc и clang для связывания. В проекте закреплены scriptc 0.3.6 и его пакет для потоков; с другой версией scriptc сборка, согласно README, завершается ошибкой. Предусмотрены сборка варианта для Node.js, нативного файла и эталонных сборок tsgo. Готовый пакет устанавливается через npm отдельно от этих шагов.
Срок выхода из экспериментального статуса не указан. Не заявлено и о том, что tsc-ts заменит tsgo или привычный компилятор TypeScript. Для тех, кто следит за переносами инструментов языка, рядом с ним можно рассмотреть экспериментальный перенос компилятора TypeScript 7 на Rust.
Что проверить разработчику сайта
Если проект использует TypeScript, начать можно с установки tsc-ts как зависимости разработки и запуска с его tsconfig.json. Дальше имеет смысл сопоставить диагностику и выходные файлы с текущей сборкой. Если проект опирается на инструменты, использующие tsc --api, отдельно проверить нужные им методы: перечень поддерживаемых вызовов не означает поддержку профилирования.
Результаты тестового корпуса показывают, какие части компилятора уже сравнили с tsgo. Они не отвечают за разработчика на вопрос, изменится ли сборка его сайта и сколько времени она займёт. Экспериментальный статус и отсутствие готовых показателей скорости оставляют это предметом проверки на собственном коде.
Моё мнение
Мне интересен перенос компилятора на TypeScript и то, что его части сравнивают с tsgo по отдельности. Я бы сначала запустил tsc-ts на небольшом учебном проекте и посмотрел на диагностику и результат сборки. Пока не вижу причины менять им привычный инструмент без такой проверки.
Для обычного лендинга мне проще сделать разметку без усложнения инструментов. tsc-ts я бы открывал, когда нужно разобраться с работой компилятора или проверить его совместимость с конкретным проектом.
Источники
Откуда новость. Текст — пересказ своими словами, факты — из источника, мнение — автора.
- tsc-ts: TypeScript written in TypeScript github.com
начинающий фронтенд-разработчик
Пишу учебные интерфейсы и собираю небольшие страницы. Сейчас разбираюсь с загрузкой изображений и базовым API.
Все публикации автораПохожие статьи
ts-rust: экспериментальный перенос компилятора TypeScript 7 на Rust
Экспериментальный ts-rust переносит компилятор, проверку типов и языковой сервер TypeScript 7 на Rust. Проект показывает ускорение в тестах, но пока требует проверки на конкретных приложениях.
Bez генерирует браузерный движок по веб-спецификациям и тестам
Bez создаёт браузерный движок по веб-спецификациям, сверяя результат с Chromium, Firefox и WebKit. Проект пока на ранней стадии, а опубликованные показатели не означают готовность движка.
Автор блога убрал Next.js и получил 100 баллов во всех категориях Lighthouse
Автор Bloffy заменил Next.js на Hono в публичной части блога и получил 100 баллов Lighthouse во всех категориях. Объясняем, почему кеша и оптимизации изображений оказалось недостаточно.
Обсуждение 5
Никола Иванов
Интересно, насколько tsc-ts уже пригоден для обычной проверки проекта, а не только для сравнения с tsgo: есть ли у него заметные расхождения на типичном коде с tsconfig, плагинами и декларациями зависимостей?
Турал Латып Автор публикации
Публикация не приводит список расхождений на типичных проектах: сравнение с tsgo — только ориентир, а плагины и декларации лучше проверять на своём tsconfig.
Ээро Лааксо
Понял, тогда проверю на небольшом проекте: особенно интересно, как перенос ведёт себя с декларациями из node_modules и нестандартными опциями tsconfig. Есть ли в репозитории готовый сценарий для такого сравнения с tsgo?
Турал Латып Автор публикации
В описании указан запуск через tsconfig.json и сравнение с эталонными сборками tsgo, но готовый сценарий именно для деклараций и нестандартных опций не упомянут.
Янек Собчак
у меня на небольшом учебном проекте самая неожиданная часть проверки типов оказалась не в исходниках, а в декларациях из node_modules: смена пары опций в tsconfig меняла, какие типы вообще подхватываются. так что для tsc-ts я бы отдельно прогнал проект с обычными зависимостями и сравнил вывод с tsgo — пока сам такой тест не делал.