Опции tsconfig, которые действительно важны, сгруппированные по задачам: ужесточить проверку типов, задать целевой уровень языка и модули, управлять тем, что попадает в вывод, отобразить пути импорта, структурировать сборки из нескольких проектов и настроить остальные проверки.
tsconfig сообщает компилятору, какие файлы включать и насколько строго проверять. Две опции делают основную часть работы: target задаёт уровень генерируемого JavaScript, а strict включает проверки безопасности одним пакетом. Ниже перечислены опции, которые меняют поведение; флаги, включённые по умолчанию, отмечены. Наследуйте конфигурацию от базовой и переопределяйте только отличия.
Справочная таблица · 55 записи
Опции tsconfigExplained
55 of 55 rows
Строгость
Главный выключатель: включает strictNullChecks, noImplicitAny и ещё несколько сразу.
Ошибка у параметров и переменных, тип которых нельзя вывести (иначе был бы any).
null и undefined больше нельзя присвоить любому типу; нужно явное согласие.
Параметры функций проверяются контравариантно; ловит некорректные типы параметров колбэков.
Проверка типов bind, call и apply по объявленным параметрам функции.
Ошибка, когда поле класса без начального значения и не присваивается в конструкторе.
Опциональное свойство { p?: T } больше не принимает явное присваивание undefined.
Требует ключевое слово override у членов, затеняющих член базового класса.
Ошибка у объявленных локальных переменных, которые никогда не читаются.
Ошибка у объявленных параметров функции, которые никогда не читаются.
Ошибка у инструкций-выражений без эффекта.
Доступ через точку запрещён для ключей из index signature; используйте скобки (obj["key"]).
Ошибка, когда один путь кода возвращает значение, а другой — нет.
Ошибка, когда case в switch проваливается в следующий без break.
Язык и модули
Уровень генерируемого JavaScript (напр. ES2022); более новые цели дают меньше downleveling.
Доступные встроенные 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 (автоматический рантайм), react (React.createElement) или preserve.
Ограничивает автоматически подключаемые пакеты @types этим списком; пустой массив не подключает ничего.
Папки, сканируемые на пакеты @types, вместо всех node_modules/@types вверх по дереву.
Гарантирует, что каждый файл транспилируется изолированно (требуется бандлерами и esbuild).
Генерация кода
Куда записывается скомпилированный JavaScript.
Корень исходных файлов; держит форму дерева вывода стабильной.
Пишет файлы .js.map, чтобы отладчики отображали всё обратно в TypeScript.