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.