Домой Статьи и аналитика Технологии Доступен TypeScript 6.0: последние шаги перед переходом на компилятор на Go

Доступен TypeScript 6.0: последние шаги перед переходом на компилятор на Go

Разработчики представили TypeScript 6.0, который стал связующим звеном перед переходом проекта на новый высокопроизводительный компилятор, написанный на Go.

6
0

Компания Microsoft представила TypeScript 6.0 — актуальную версию языка программирования, расширяющего возможности JavaScript для разработки веб-приложений. Исходный код компилятора, преобразующего TypeScript в JavaScript, распространяется по лицензии Apache 2.0 и доступен в репозитории на GitHub, а спецификации языка открыты в рамках соглашения Open Web Foundation.

TypeScript сохраняет полную обратную совместимость с JavaScript, что упрощает адаптацию существующих проектов. Конечный продукт компилируется в стандартный JS, совместимый с современными браузерами, а также средами Node.js, Bun и Deno. Главными преимуществами языка остаются строгая статическая типизация и поддержка полноценных классов, что помогает снизить количество ошибок, повысить читаемость кода и упростить его дальнейшее сопровождение.

Переход на новый компилятор

Версия 6.0 стала последним крупным релизом, использующим текущий компилятор на базе TypeScript (транслируемый в JavaScript). Начиная с ветки 7.0, проект переходит на typescript-go (tsgo) — новый компилятор, написанный на языке Go и разрабатываемый с 2024 года. Его внедрение призвано значительно ускорить сборку, снизить потребление оперативной памяти и сократить время запуска редакторов кода, что критически важно для работы с крупными программными комплексами.

TypeScript 6.0 выступает связующим звеном, подготавливающим экосистему к переходу на архитектуру 7.x. Ветки будут сопровождаться параллельно до момента, пока новая версия не достигнет полной зрелости.

Ключевые нововведения и улучшения

  • Поддержка префиксов «#/»: для импорта модулей теперь можно использовать псевдонимы внутри пакетов, избавляясь от громоздких относительных путей (например, import * as utils from "#root/utils.js").
  • Стабильная сортировка типов: добавлен флаг --stableTypeOrdering, активирующий алгоритм детерминированной сортировки, который будет стандартом в 7-й версии. Использование рекомендовано для диагностики перед миграцией, так как этот режим может замедлить компиляцию на 25%.
  • Интеграция Temporal API: добавлены встроенные типы для работы с датами и временем, что позволяет гибко манипулировать временными метками с учетом часовых поясов и выполнять арифметические операции.
  • Методы Map и WeakMap: появились типы для getOrInsert и getOrInsertComputed, упрощающие получение или создание записей в коллекциях.
  • Безопасность регулярных выражений: добавлена поддержка функции RegExp.escape для корректного экранирования спецсимволов при работе с конструктором RegExp().

Изменения в настройках по умолчанию

Для повышения производительности и актуальности разработки были скорректированы базовые параметры конфигурации:

  • Параметр rootDir теперь по умолчанию ссылается на текущий каталог («.»), где находится tsconfig.json.
  • Поле types теперь равно [], что исключает автоматическое подключение всех пакетов из node_modules/@types. Это решение ускоряет компиляцию на 20–50%.
  • Значение target обновлено до es2025; версия es5 признана устаревшей, минимально поддерживаемый стандарт — es6 (2015).
  • Режим strict (строгая проверка типов) теперь активирован по умолчанию.
  • Параметр module выставлен в значение esnext, отдавая приоритет модулям ECMAScript (ESM) вместо устаревшего формата CommonJS.

В целях оптимизации производительности объявлены устаревшими опции --baseUrl, --outFile, режим --moduleResolution: classic, а также использование ключевого слова module для создания пространств имен.

Источник: http://www.opennet.ru