Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як оновити проєкт з TypeScript 5 на 6 і 7: які опції видалено і що змінилося за замовчуванням?

TypeScript 6.0 - перехідний реліз: останній на старому компіляторі, який готує проєкти до TypeScript 7. Він змінює значення за замовчуванням і оголошує застарілими опції, які в 7.0 стали помилками.

Нові значення за замовчуванням:

Опція Було Стало
strict false true
module залежно від target esnext
target es5 останній стабільний стандарт (es2025)
types усі @types/* []
rootDir спільний каталог вихідних файлів каталог з tsconfig.json
noUncheckedSideEffectImports false true

Найчастіші проблеми після оновлення:

  • «Cannot find name 'process'» / «describe» - додати "types": ["node", ...];
  • результат збирається в dist/src/index.js замість dist/index.js - вказати "rootDir": "./src";
  • нові помилки строгості - або виправляти, або явно "strict": false як тимчасовий крок.

Видалено в TypeScript 7 (у 6.0 - попередження, які можна приглушити "ignoreDeprecations": "6.0"):

  • baseUrl - шляхи в paths тепер відносно каталогу конфігу з префіксом ./;
  • moduleResolution: node (node10) і classic - замінити на bundler або nodenext;
  • target: es5 і downlevelIteration - найнижча ціль es2015; для ES5 - зовнішній компілятор;
  • module: amd, umd, systemjs, none і outFile;
  • esModuleInterop: false, allowSyntheticDefaultImports: false, alwaysStrict: false;
  • ключове слово module для просторів імен (лише namespace) і asserts в імпортах (лише with);
  • передача файлів у tsc у каталозі з tsconfig.json без --ignoreConfig.

Рекомендований порядок:

  1. оновитися до TypeScript 6.0 і виправити всі попередження про застарілі опції (не приглушувати ignoreDeprecations надовго - у 7.0 це не спрацює);
  2. частину змін (baseUrl, rootDir) робить автоматично експериментальний інструмент ts5to6;
  3. перевірити з прапорцем stableTypeOrdering - у 7.0 він увімкнений і незмінний; з ним 6.0 дає ті самі результати, що й 7.0;
  4. перейти на TypeScript 7, а для інструментів, що потребують API (typescript-eslint), лишити поряд @typescript/typescript6.

Чому ці зміни корисні: явний types пришвидшує перевірку на 20-50%, а видалені опції здебільшого ховали помилки (TypeScript «бачив» імпорти, які не працювали під час виконання).

Докладніше в документації: Анонс TypeScript 6.0

Схожі питання