Технологии

TypeScript 7.0 работает в 10 раз быстрее — Vue, Svelte и Angular придётся подождать

Adrian Kessler

Компилятор TypeScript в VS Code раньше тратил 125 секунд на проверку свежей копии собственной кодовой базы редактора. TypeScript 7.0 выполняет ту же работу за 10.6 секунды. Microsoft не оптимизировала старый код — она перенесла всю среду выполнения компилятора с JavaScript на Go, открыв доступ к многозадачности на многоядерных процессорах, которую не может обеспечить движок JavaScript.

Перенос не был переписыванием с нуля. Инженеры Microsoft описали логику проверки типов как структурно идентичную TypeScript 6.0 — те же правила, то же поведение, переведённые на язык, который может распределять работу по ядрам процессора. Команда выбрала Go, потому что исходная кодовая база JavaScript с большим количеством функций почти один в один отображалась на идиомы Go. Новая среда выполнения также вводит флаги для явного управления параллелизмом: передача —checkers 8 на современном рабочем месте даёт улучшение в 16.7 раза по сравнению с TypeScript 6. Проверка типов в CI Slack упала с 7.5 минут до 1.25. Сборка Bluesky сократилась с 24.3 секунды до 2.8. Закономерность сохраняется во всех кодовых базах: выгода возрастает с ростом размера проекта, потому что потолком теперь является оборудование, а не среда выполнения.

TypeScript 7.0 поставляется без публичного программного API — интерфейса, который инструменты сборки используют при вызове компилятора из своего кода. Проверка шаблонов каждого крупного веб-фреймворка зависит от него. Инструменты Volar для Vue, языковой сервис Svelte, MDX, проверка шаблонов Angular: ни один из них не работает с TypeScript 7.0. Инструменты вроде ts-morph и ts-jest, которые открывают внутренности компилятора TypeScript для рефакторинга и тестирования, также сломаны. Microsoft подтвердила, что замена API запланирована на TypeScript 7.1, ожидаемый в октябре. Проектам, использующим любые из этих фреймворков или инструментов, пока не следует обновляться.

Старые конфигурации проектов сталкиваются с отдельным набором жёстких ограничений. TypeScript 7.0 превращает опции, устаревшие в версии 6.0, в жёсткие ошибки сборки: цели компиляции ES5, форматы модулей AMD и SystemJS, классическое разрешение модулей и ключевое слово assert в операторах импорта приводят к немедленному сбою сборки. Новый tsconfig.json по умолчанию больше не загружает пакеты @types автоматически, что означает, что проекты, полагавшиеся на автоматическое обнаружение типов без явного объявления зависимостей типов, будут молча сбоить при импорте. Microsoft предоставляет прокладку совместимости typescript@npm:@typescript/typescript6 для проектов, которым необходимо сохранить инструментарий TS6 рядом с новым компилятором.

Проекты, которые преодолевают эти препятствия — обычные приложения Node.js или Deno, браузерные приложения, не построенные на системе шаблонов фреймворков, и библиотеки без зависимостей от программного API — могут обновиться, изменив одну строку в package.json. Поддержка редакторов следует тому же расколу: VS Code имеет специальное расширение TypeScript 7, доступное сейчас, а встроенная поддержка завершает миграцию на протокол Language Server Protocol, заменяя старую архитектуру TSServer. WebStorm и другие редакторы, также зависевшие от TSServer, всё ещё работают над этим переходом.

TypeScript 7.1, нацеленный на октябрь 2026 года, поставит новый API компилятора, необходимый инструментам Vue, Svelte, Angular и MDX для миграции. Когда он появится, выгоды от производительности, полученные за 15-месячный перенос на Go, достигнут всей экосистемы. До тех пор страницы проектов Volar, SvelteKit и Angular рекомендуют оставаться на TypeScript 6.0.x.

Теги: , , ,

Обсуждение

Имеется 0 комментариев.