TypeScript 7: новые возможности, переход компилятора на Go и планы Microsoft
В статье рассматривается развитие TypeScript, его текущие ограничения и планы Microsoft по их устранению, включая переход компилятора на Go и новые функции в версии 7. Читатель узнает о ключевых изменениях, улучшениях производительности и поддержке инструментов.
TypeScript, созданный Microsoft, стал популярным благодаря статической типизации, но сохраняет ограничения JavaScript, такие как медленная компиляция и сложные типовые конструкции. Microsoft планирует ускорить компиляцию и повысить надёжность, переходя к реализации компилятора на Go, а версия 7 вводит субпути импорта, строгий режим, новые типы и улучшения в VS Code. Версия 6 служит стабилизирующим мостом, а TS 7 обещает значительное ускорение и упрощённую конфигурацию проекта.
#История создания и цели TypeScript
TypeScript был разработан компанией Microsoft как ответ на растущие проблемы масштабируемости JavaScript. Его создатели, в числе которых известный разработчик языка C, стремились добавить в JavaScript статическую типизацию, улучшить надёжность кода и упростить процесс разработки крупных приложений. После того как Google приняла TypeScript в своих проектах, язык быстро завоевал популярность, и сегодня значительная часть веб‑приложений пишется именно на TypeScript. Автор рассматриваемого текста отмечает, что TypeScript действительно упростил его работу, однако подчёркивает, что язык всё ещё несёт в себе значительный «багаж» JavaScript и не обладает некоторыми возможностями, присутствующими в других языках.
#Текущие проблемы и ограничения
Несмотря на очевидные преимущества, TypeScript сохраняет ряд ограничений, характерных для JavaScript. К ним относятся медленная компиляция, сложные типовые конструкции, а также проблемы с масштабируемостью и надёжностью при работе с большими кодовыми базами. Кроме того, сам компилятор TypeScript представляет собой объёмный файл размером около трёх мегабайт, написанный на TypeScript, что усложняет его поддержку. Язык JavaScript, будучи оптимизированным под асинхронные задачи, не всегда подходит для написания компиляторов, где требуются фиксированные потоки выполнения. Эти особенности приводят к необходимости постоянного улучшения производительности типовой проверки и качества сообщений об ошибках.
#Развитие и планы Microsoft
Microsoft активно работает над устранением перечисленных недостатков. Команда проекта регулярно публикует блоги, в которых рассказывается о прогрессе разработки, а также о планах по ускорению компиляции и повышению надёжности типовой системы. В рамках этих усилий разрабатываются более удобные настройки как для разработчиков, так и для автоматических агентов, улучшается производительность типовой проверки и предоставляется более информативная диагностика ошибок. Ожидается, что выпуск TypeScript 7 принесёт значительные улучшения скорости и надёжности, однако реализация этих нововведений потребует значительных временных и трудовых затрат.
#Переход к Go и версии TypeScript 6 и 7
Последняя версия, TypeScript 6, позиционируется как стабильная «очистка» текущего кодового базиса, построенного на JavaScript. Она служит мостом между версиями 5.9 и предстоящей 7, включающей новые функции, не ограниченные лишь совместимостью. В TypeScript 6 не планируется добавление новых возможностей, а команда сосредоточена на исправлении обнаруженных багов; официального релиза 6.1 не предвидится, хотя могут появиться корректирующие патчи.
С переходом к версии 7 планируется радикальная смена технологии реализации: новый кодовый базис будет написан на языке Go. Выбор Go обусловлен его гибкостью и возможностью генерировать нативный код, а также поддержкой многопоточности и общей памяти, что обещает существенное ускорение компиляции. Несмотря на то, что сборщик мусора Go может вносить неопределённость в реальном времени, для компиляторов это не критично, поскольку они не требуют строгих временных ограничений. Ночные сборки TypeScript 7 уже демонстрируют работу с native‑представлениями и интеграцию в расширение для VS Code, улучшая автодополнение, переход к определению и переход к типу.
#Ключевые изменения в TypeScript 7
В новой версии реализовано множество изменений, направленных на упрощение разработки и повышение предсказуемости типовой системы. Поддержка субпутей импорта позволяет создавать внутренние алиасы модулей внутри пакета, а введённый флаг стабильного порядка типов устраняет непредсказуемые результаты, зависящие от порядка проверки. Добавлены новые типы для работы с временными данными и методы upsert для карт, а также автозамена строк в React‑компонентах. В библиотеку DOM включены итераторы и асинхронные итераторы, расширяя возможности работы с DOM‑элементами.
Одновременно с этим удалена поддержка устаревших стандартов ES5, а также модульных систем AMD и UMD, а по умолчанию включён строгий режим и формат модулей ESNext. В качестве целевой версии ECMAScript по умолчанию используется текущий год, а проверка на отсутствие побочных эффектов импортов включена по умолчанию. Настройки по умолчанию также изменены: lib replacement отключён, корневая директория указывается текущим каталогом, массив типов оставлен пустым, а поддержка baseUrl удалена в пользу корневых и пользовательских путей. Строгий режим в JavaScript удалён, а в TypeScript включён, что повышает контроль над типами. Удалены устаревшие параметры outFile и legacy‑синтаксис для namespace, изменён синтаксис импорта через assert, а также добавлена возможность получения ошибок при запуске tsc на отдельном файле без конфигурации.
#Инструменты и поддержка экосистемы
Помимо изменений в ядре языка, команда проекта уделяет внимание развитию инструментов. Ночные сборки TypeScript 7 уже включают расширения для VS Code, которые улучшают автодополнение кода, позволяют быстро переходить к определению и типу, а также предоставляют более точные сообщения об ошибках. Автор текста отмечает, что в своей работе он использует сервис Clerk, который помогает решать задачи безопасности и интеграции платежей в веб‑приложениях, делая процесс разработки более удобным. Он рекомендует рассматривать Clerk как полезный инструмент для повышения надёжности и упрощения реализации критически важных функций.
#Вывод
TypeScript прочно утвердился как основной инструмент для разработки масштабируемых веб‑приложений, однако сохраняет ряд проблем, связанных с наследием JavaScript, медленной компиляцией и сложными типовыми конструкциями. Microsoft активно работает над их устранением, публикует обновления и планирует радикальный переход к реализации на Go, что должно обеспечить значительное ускорение и улучшить многопоточность. Версия 6 выступает как стабильный мост, а версия 7 привносит широкий набор новых возможностей и упрощает конфигурацию проекта. Интеграция с современными инструментами, такими как VS Code, и поддержка сторонних сервисов, например Clerk, способствуют повышению продуктивности разработчиков. В целом, развитие TypeScript направлено на повышение надёжности, скорости и удобства использования, что делает его перспективным выбором для будущих проектов.