tsconfig.json: настройка проекта

Файл, который превращает набор .ts-файлов в настоящий проект с единой конфигурацией.

tsconfig.json — конфигурационный файл в корне проекта; он задаёт, какие файлы компилировать и по каким правилам.

Зачем он нужен

Указывать файлы и флаги вручную при каждом запуске tsc неудобно и легко ошибиться. tsconfig.json хранит все настройки в одном месте. Когда он есть, достаточно вызвать tsc без аргументов — компилятор сам найдёт конфиг и обработает весь проект.

Сгенерировать файл с подробными комментариями можно командой:

tsc --init

Минимальный конфиг

На практике достаточно нескольких опций. Вот разумная база:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true
  }
}

Разбор ключевых опций

ОпцияЧто задаёт
targetверсия JavaScript на выходе (ES2020, ES2015 и т. д.)
moduleсистема модулей: commonjs для Node, esnext для браузера
outDirпапка для готовых .js (обычно dist)
rootDirгде лежат исходники (обычно src)
strictвключает все строгие проверки типов

Главная опция: strict

Флаг "strict": true — самый важный. Он включает набор строгих проверок разом, в том числе strictNullChecks (про неё подробно в разделе о базовых типах) и noImplicitAny (запрет на скрытый тип any). Без строгого режима TypeScript многое пропускает, и половина его пользы теряется.

С noImplicitAny такой код не пройдёт компиляцию:

function double(x) {     // тип x не указан
  return x * 2;
}
// Ошибка: Parameter 'x' implicitly has an 'any' type.

Компилятор требует явно указать тип — это заставляет описывать данные осознанно.

Разделение исходников и сборки

Связка rootDir + outDir разносит код по папкам: вы пишете в src/, а компилятор кладёт результат в dist/. Структура остаётся чистой:

проект/
  src/
    index.ts
  dist/
    index.js
  tsconfig.json

Теперь одна команда собирает всё:

tsc

Итог

  • tsconfig.json хранит настройки проекта; с ним достаточно вызвать tsc без аргументов.
  • tsc --init создаёт конфиг с комментариями к опциям.
  • Опция "strict": true — обязательна: она включает строгие проверки, ради которых и берут TypeScript.
Проверьте себя
1. Что произойдёт, если вызвать tsc без аргументов при наличии tsconfig.json?
AКомпилятор выдаст ошибку «не указан файл»
BКомпилятор найдёт конфиг и обработает весь проект по его правилам
CБудет скомпилирован только файл index.ts
DЗапустится мастер настройки
2. За что отвечает опция "strict": true?
AЗапрещает использовать функции
BВключает набор строгих проверок типов, включая strictNullChecks и noImplicitAny
CУскоряет компиляцию
DУдаляет комментарии из кода
3. Какая опция задаёт папку для сгенерированных .js-файлов?
ArootDir
BoutDir
Ctarget
Dmodule
Поддержать проект