Важливі параметри tsconfig, згруповані за призначенням: посилити перевірку типів, задати ціль мови та модулі, керувати тим, що генерується, зіставляти шляхи імпорту, структурувати збірки з кількох проєктів і налаштувати решту перевірок.
tsconfig повідомляє компілятору, які файли включити та наскільки бути суворим. Основну роботу виконують два параметри: target задає рівень генерації JavaScript, а strict одним пакетом вмикає перевірки безпеки. Наведені нижче параметри — ті, що справді змінюють поведінку; параметри, увімкнені за замовчуванням, позначено. Похідте свою конфігурацію від базової, а потім перевизначайте лише те, що відрізняється.
Довідкова таблиця · 55 записи
Параметри tsconfigExplained
55 of 55 rows
Строгість
Головний перемикач: одразу вмикає strictNullChecks, noImplicitAny та ще кілька інших.
Помилка для параметрів і змінних, тип яких неможливо вивести (інакше вони були б any).
null і undefined більше не можна привласнити до будь-якого типу; це робиться явно.
Параметри функцій перевіряються контраваріантно; виявляє ненадійні типи параметрів колбеків.
Перевіряє типи bind, call і apply відповідно до оголошених параметрів функції.
Помилка, коли властивість класу не має початкового значення і не привласнюється в конструкторі.
Необов'язкова властивість { p?: T } більше не приймає явне привласнення undefined.
Вимагає ключове слово override для членів, що затіняють член базового класу.
Помилка для оголошених локальних змінних, які ніколи не читаються.
Помилка для оголошених параметрів функції, які ніколи не читаються.
Помилка для інструкцій-виразів, які не мають жодного ефекту.
Точковий доступ заборонений для ключів index-підпису; використовуйте квадратні дужки (obj["key"]).
Помилка, коли один шлях виконання повертає значення, а інший — ні.
Помилка, коли case у switch провалюється в наступний без break.
Мова та модулі
Рівень генерації JavaScript (напр., ES2022); новіші цілі потребують менше даунлевелінгу.
Доступні вбудовані API (напр., ES2022, DOM, DOM.Iterable).
Система модулів, що генерується (напр., ESNext, CommonJS, NodeNext).
Використовує справжні правила Node: кожен файл обирає CJS чи ESM за найближчим package.json, а відносні імпорти потребують розширень файлів.
Як розв'язуються шляхи імпорту (напр., bundler, node, nodenext).
Коли файл вважається модулем: auto (за наявністю import/export), legacy чи force (завжди).
Дозволяє стиль default-імпорту з модулів CommonJS (у більшості налаштувань за замовчуванням true).
Дозволяє default-імпорт із модулів, що експортують лише іменовані значення (лише на рівні типів).
Імпорти генеруються точно як написано; імпорти лише типів мають використовувати import type (TS 5).
Дозволяє імпортам завантажувати файли .json як типізовані значення.
Включає файли .js як вхідні дані компіляції.
Перевіряє типи й у файлах .js, читаючи їхні JSDoc-коментарі; тягне за собою allowJs.
Як компілюється .tsx: react-jsx (автоматичний runtime), react (React.createElement) чи preserve.
Обмежує автоматично включені пакети @types цим списком; порожній масив не включає жодного.
Теки, що скануються для пакетів @types, замість усіх node_modules/@types угору по дереву.
Гарантує, що кожен файл можна транспілювати ізольовано (вимога bundler'ів і esbuild).
Генерація коду
Куди записується зкомпільований JavaScript.
Корінь вихідних файлів; стабілізує форму дерева виводу.
Генерує файли .js.map, щоб дебагери мапили назад у TypeScript.
Вбудовує source map як коментар усередині файлу .js замість окремого .js.map.
Генерує оголошення типів .d.ts (потрібно для бібліотек).
Генерує файли .d.ts.map, щоб редактори переходили з оголошень до вихідного коду TypeScript.
Генерує лише файли .d.ts; JavaScript залишається bundler'у (потребує declaration або composite).
Повторно використовує хелпери на кшталт __rest із tslib замість генерації їх у кожен файл.
Коректно компілює for..of, spread і деструктуризацію ітерованих, коли target старіший за ES2015.
Видаляє коментарі зі згенерованого JavaScript.
Лише перевірка типів; файли не пишуться (коли генерацію виконує bundler).
Шляхи
Базова тека для розв'язання модулів із нерелятивними шляхами.
Зіставляє префікси імпортів із розташуваннями, напр. { "@/*": ["src/*"] }.
Сприймає кілька тек як один віртуальний корінь для розв'язання шляхів.
Структура проєкту
Позначає проєкт придатним до збірки для project references (вмикає declaration, incremental).
Залежить від інших проєктів tsconfig для швидших, ізольованих збірок.
Зберігає інформацію збірки, щоб наступного разу не перевіряти незмінені файли.
Інші перевірки
Пропускає перевірку типів файлів .d.ts заради швидкості (за замовчуванням true).
Помилка для імпортів, що не збігаються зі справжнім регістром літер файлу.
Доступ за індексом до масиву повертає T | undefined, а не T.
Поля класу створюються через Object.defineProperty замість простого привласнення (за замовчуванням true для target ES2022+).
Вмикає застарілий синтаксис decorator, який використовують старіші фреймворки (до стандартизації).
Повідомляє повні назви типів у помилках замість обрізання довгих.
Помилка, коли «голий» імпорт за побічним ефектом (import "./x.css") не розв'язується ні в що.
Дозволяє шляхи імпорту, що закінчуються на .ts (потребує noEmit або emitDeclarationOnly).