Вышел tsc-ts — экспериментальный компилятор TypeScript, написанный на TypeScript

tsc-ts — экспериментальный перенос компилятора TypeScript 7.0.2 на TypeScript. Пакет можно установить через npm и проверить на собственном проекте; сравнения с tsgo не гарантируют идентичную работу на любой кодовой базе.

· 4 мин чтения · 5 комментариев

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 я бы открывал, когда нужно разобраться с работой компилятора или проверить его совместимость с конкретным проектом.

Источники

Откуда новость. Текст — пересказ своими словами, факты — из источника, мнение — автора.

  1. tsc-ts: TypeScript written in TypeScript github.com

Об авторе

Турал Латып

начинающий фронтенд-разработчик

Пишу учебные интерфейсы и собираю небольшие страницы. Сейчас разбираюсь с загрузкой изображений и базовым API.

Все публикации автора

Фронтенд 4 мин чтения

ts-rust: экспериментальный перенос компилятора TypeScript 7 на Rust

Экспериментальный ts-rust переносит компилятор, проверку типов и языковой сервер TypeScript 7 на Rust. Проект показывает ускорение в тестах, но пока требует проверки на конкретных приложениях.

Фронтенд 3 мин чтения

Bez генерирует браузерный движок по веб-спецификациям и тестам

Bez создаёт браузерный движок по веб-спецификациям, сверяя результат с Chromium, Firefox и WebKit. Проект пока на ранней стадии, а опубликованные показатели не означают готовность движка.

Скорость 4 мин чтения

Автор блога убрал Next.js и получил 100 баллов во всех категориях Lighthouse

Автор Bloffy заменил Next.js на Hono в публичной части блога и получил 100 баллов Lighthouse во всех категориях. Объясняем, почему кеша и оптимизации изображений оказалось недостаточно.

Написать комментарий

Не публикуется. Пришлём ссылку, чтобы подтвердить комментарий.

Без ссылок и рекламы. Первый комментарий публикуется после проверки. Отправляя комментарий, вы соглашаетесь с политикой конфиденциальности.

  1. Интересно, насколько tsc-ts уже пригоден для обычной проверки проекта, а не только для сравнения с tsgo: есть ли у него заметные расхождения на типичном коде с tsconfig, плагинами и декларациями зависимостей?

    1. Турал Латып Автор публикации

      Публикация не приводит список расхождений на типичных проектах: сравнение с tsgo — только ориентир, а плагины и декларации лучше проверять на своём tsconfig.

      1. Понял, тогда проверю на небольшом проекте: особенно интересно, как перенос ведёт себя с декларациями из node_modules и нестандартными опциями tsconfig. Есть ли в репозитории готовый сценарий для такого сравнения с tsgo?

        1. Турал Латып Автор публикации

          В описании указан запуск через tsconfig.json и сравнение с эталонными сборками tsgo, но готовый сценарий именно для деклараций и нестандартных опций не упомянут.

          1. у меня на небольшом учебном проекте самая неожиданная часть проверки типов оказалась не в исходниках, а в декларациях из node_modules: смена пары опций в tsconfig меняла, какие типы вообще подхватываются. так что для tsc-ts я бы отдельно прогнал проект с обычными зависимостями и сравнил вывод с tsgo — пока сам такой тест не делал.