✨
Анонс TypeScript 5.8
Команда TypeScript представила версию 5.8 с новыми возможностями и улучшениями. Вот ключевые изменения:
Улучшенная проверка условий в returnТеперь TypeScript точнее анализирует условные выражения в операторах return. Это помогает находить ошибки, когда ветки возвращают несовместимые типы. Например, если функция должна вернуть объект URL, а одна из веток возвращает строку, TypeScript сразу укажет на проблему.
Поддержка require() для ESM в --module nodenextВ Node.js 22 появилась возможность использовать require() для загрузки ESM-модулей из CommonJS. TypeScript 5.8 поддерживает это поведение с флагом --module nodenext, что упрощает переход на ESM для разработчиков библиотек без дублирования кода.
Флаг --erasableSyntaxOnly для чистого синтаксисаНовый флаг выявляет конструкции TypeScript, которые нельзя «стереть» в JavaScript (например, enum или параметры свойств в классах). Это полезно для совместимости с режимом Node.js, где TypeScript-файлы запускаются напрямую.
Управление заменой стандартных библиотек (--libReplacement)Флаг --libReplacement позволяет отключить автоматическую замену встроенных типов (например, dom) на кастомные из
@typescript/lib-*. Это ускоряет работу, если вы не используете такую замену.
Сохранение вычисляемых свойств в .d.ts-файлахИсправляет генерацию деклараций для вычисляемых свойств в классах.
Оптимизации скорости работыУлучшена обработка путей и валидация настроек проекта. Это ускоряет загрузку крупных проектов и делает реакцию на изменения в режиме --watch более отзывчивой.
Важные изменения в синтаксисеПри использовании --module nodenext импорт с assert теперь вызывает ошибку — вместо него нужно использовать with (актуально для Node.js 22+).
👉
https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/