Изменения по умолчанию в TypeScript 6.0: практическое руководство по миграции
Узнайте, какие девять настроек компилятора TypeScript 6.0 изменились по умолчанию, как настроить tsconfig для 2026 года и как подготовить кодовые базы к использованию TypeScript 7, основанного на Go.
Если при сборке недавно начали появляться ошибки в режиме moduleResolution: node, это не означает, что у вас что-то сломалось. TypeScript 6.0 тихо изменил девять настроек компилятора по умолчанию, и команды, отложившие обновление, теперь сталкиваются со всеми этими изменениями одновременно. Проще говоря: это обновление нельзя откладывать бесконечно. TypeScript 6.0 — это последняя версия, созданная на основе первоначального компилятора, основанного на JavaScript. TypeScript 7 представляет собой полностью переписанный вариант, написанный на языке Go, и по предварительным данным скорость компиляции может увеличиться в 10 раз по сравнению с текущей версией.
Что именно изменилось
- Режим строгости включен по умолчанию. Любой новый проект, создаваемый сейчас, автоматически наследует параметр
strict: true. Если вы обслуживаете старый кодовый базис, ожидайте появления множества новых диагностических сообщений, связанных с косвенными типамиanyи проверками на возможность значения null, которые ранее оставались незамеченными. - Целевая версия компиляции изменилась с ES3 на ES2022. Практически никто не использовал вывод в формате ES3, но если ваша сборочная цепочка не указывала конкретную целевую версию, это изменение влияет на код, который компилятор генерирует по умолчанию.
- ESM становится стандартной системой модулей. Кодовые базисы, которые по-прежнему активно используют функции
require(), должны тщательно пересмотреть свою стратегию работы с модулями, поскольку предположения, заложенные в компилятор, больше не фаворизируют формат CommonJS.
moduleResolution: node теперь считается устаревшим. Рекомендуемым решением является переход на bundler или nodenext, поскольку механизм разрешения модулей в стиле bundler теперь соответствует способу, которым инструменты вроде Vite на практике разрешают модули.--outFile вместе с форматами вывода AMD, UMD и SystemJS больше не поддерживаются. Если ваш процесс сборки всё ещё использует один из этих форматов, TypeScript 6.0 пока не готов для вашего проекта.assert для атрибутов импорта заменено на with.Рекомендуемая конфигурация tsconfig для 2026 года
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "bundler",
"isolatedDeclarations": true,
"strict": true,
"noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": true,
"skipLibCheck": true
}
}
Применение этой конфигурации в нескольких средних по размеру проектах на React и Next.js в этом квартале привело к появлению ошибок, которые почти всегда были настоящими багами, а не ложными срабатываниями.
Новый флаг stableTypeOrdering
Этот флаг не привлекает должного внимания. Он нормализует внутренний порядок объединений типов, что означает, что различия между результатами компиляции с использованием устаревшего JavaScript-компилятора и будущего компилятора на основе Go действительно имеют смысл, а не являются следствием произвольной перестановки элементов. Включение этого флага сейчас и получение чистых результатов компиляции фактически представляет собой пробный запуск, позволяющий заранее проверить ваш кодовый базис перед переходом на TypeScript 7.
Значимость этого для команд, работающих с полным стеком технологий
- Отзывчивость редактора значительно улучшилась, поскольку сервис обработки языка теперь работает быстрее самого компилятора, с которым вы постоянно взаимодействуете в процессе ежедневной разработки.
- Определения типов в Redux, React и Next.js становятся более строгими, поэтому с обновлением этих пакетов можно ожидать более строгих правил инференции в коде управления состоянием.
Практические шаги миграции
- Начните обновление с отдельной разработческой ветки, а не непосредственно с основной линии кода.
- Запустите команду
tsc --noEmitи классифицируйте возникающие ошибки в зависимости от частоты их появления в кодовой базе, а не от того, в каком файле они указаны первыми. - Сначала решите проблему с параметром
moduleResolution, поскольку именно он чаще всего приводит к неожиданным сбоям. - Только после того, как всё остальное будет компилироваться без ошибок, включайте параметр
stableTypeOrderingв качестве окончательной проверки на корректность миграции.
TypeScript 6.0 не представляет собой набор впечатляющих новых функций. Он означает тщательную и осмотрительную оптимизацию, предшествующую самым значительным архитектурным изменениям в языке с момента его создания. Проводите эту миграцию попарно, пока у вас есть возможность контролировать процесс. Откладывание работы не устраняет её, а лишь переносит на более поздний момент, когда у вас будет меньше времени и больше давления для её правильного выполнения.
Связанные статьи
- Стандарты полноценного стека JavaScript на 2026 год: TypeScript, RSC и др. — Объясняется, почему TypeScript, React Server Components и более лаконичный подход к управлению состоянием стали стандартным производственным стеком для команд, работающих с JavaScript, в 2026 году.