TypeScript 6.0 уже здесь
TypeScript 6.0 — это важная веха. Это последняя версия, построенная на базе JavaScript. Следующая версия, 7.0, перейдет на компилятор на базе Go.
Этот переход важен для вашего проекта. Если вы слишком долго будете откладывать обновление, вам придется столкнуться с двумя миграциями подряд.
Новые возможности, которые стоит использовать
• Ключевое слово using: оно управляет такими ресурсами, как соединения с базами данных или дескрипторы файлов. Оно автоматически очищает память. Вам больше не нужны дополнительные блоки finally, чтобы предотвратить утечки.
• Улучшенный вывод типов методов: вы можете перестать писать явные аннотации типов для fluent API. Теперь TypeScript сам обрабатывает контекст.
• Улучшения вариативных кортежей (variadic tuples): теперь вы можете использовать spread-оператор для типов в любом месте кортежа. Это значительно упрощает написание сложных паттернов функций.
Прирост производительности
Новая версия работает быстрее. В крупных проектах скорость пересборки увеличилась до 40%. Компилятор теперь использует более умное отслеживание зависимостей. Он выполняет перекомпиляцию только при изменении сигнатуры, а не просто при изменении тела функции.
Обратите внимание на критические изменения (Breaking Changes)
• Слияние пространств имен (namespace merging): при слиянии пространств имен с классами необходимо использовать явные экспорты.
• Более строгие индексные сигнатуры: вы больше не можете обращаться к произвольным свойствам объекта. Это предотвращает ошибки, возникающие из-за предположения о существовании свойства, которого на самом деле нет.
• Настройки строгого режима по умолчанию: флаг noUncheckedIndexedAccess теперь включен по умолчанию. Вы должны проверять, являются ли элементы массива null или undefined.
Стратегия миграции
Не паникуйте, если увидите много ошибок. Следуйте этим шагам:
- Сначала запустите компилятор с флагом
noEmit, чтобы увидеть все ошибки. - Используйте официальные codemods для автоматического исправления индексных сигнатур и проверок на null.
- Исправьте проблемы с пространствами имен вручную.
- Проверьте свои
node_modules. Некоторые библиотеки могут еще не поддерживать версию 6.0.
Переход на компилятор Go в версии 7.0 обеспечит десятикратное ускорение проверки типов. Начинайте переход на 6.0 уже сейчас, чтобы подготовить свой код к будущему.