Ответ
Файл tsconfig.json — это конфигурационный файл компилятора TypeScript (tsc). Он определяет, как TypeScript-код должен быть преобразован в JavaScript, и задаёт правила для проверки типов.
Ключевые разделы конфигурации:
compilerOptions: Самый важный раздел. Задаёт целевой стандарт JavaScript, систему модулей, строгость проверки типов и путь для выходных файлов.include/exclude: Определяет, какие файлы должны компилироваться.extends: Позволяет наследовать настройки из другой конфигурации (например, базового конфига компании).
Пример конфигурации для Node.js проекта:
{
"compilerOptions": {
"target": "ES2022", // Целевая версия ECMAScript
"module": "CommonJS", // Система модулей для Node.js
"outDir": "./dist", // Папка для скомпилированных .js файлов
"rootDir": "./src", // Корневая папка с исходным кодом .ts
"strict": true, // Включает все строгие проверки типов
"esModuleInterop": true // Упрощает работу с CommonJS-модулями
},
"include": ["src/**/*"], // Компилировать все файлы в папке src
"exclude": ["node_modules", "**/*.test.ts"]
}
Без tsconfig.json компилятор использует значения по умолчанию, которые часто не подходят для реальных проектов.
Ответ 18+ 🔞
Слушай, а вот этот tsconfig.json — это типа такая бумажка, где ты TypeScript-компилятору объясняешь, как ему с твоим кодом работать. Без неё он как слепой котёнок — шарится, нихуя не понимает, и на выходе получается какая-то дичь.
Ну, короче, что там внутри:
compilerOptions: Это, бля, самое главное. Тут ты ему мозги вправляешь: в какой стандарт JS компилировать, как модули собирать, и насколько строго за тобой следить. Без этого — доверия ебать ноль.include/exclude: Ты ему тут пальцем показываешь: вот эту папку (src) — давай, компилируй, а вот эту (node_modules) — обходи за километр, там манда с ушами.extends: Ленивая, но хитрая жопа. Можно взять готовый конфиг от умных дядек и просто сказать: «делай как там».
Вот, смотри, как для простого Node.js проекта выглядит нормальный конфиг:
{
"compilerOptions": {
"target": "ES2022", // Говоришь: «Делай мне JS, как будто на дворе 2022-й год, а не 2002-й».
"module": "CommonJS", // «Собирай модули по-старинке, как Node.js любит».
"outDir": "./dist", // «Готовые .js файлы складывай в папку `dist`, а то в `src` будет **овердохуища** мусора».
"rootDir": "./src", // «Исходники мои — в папке `src`, ищи там».
"strict": true, // «Слушай сюда, будь строгим как училка. Хочу, чтобы ты на каждую мою опечатку орал».
"esModuleInterop": true // «И сделай так, чтобы импорты из обычных npm-пакетов не вызывали **удивление пиздец**».
},
"include": ["src/**/*"], // Всё, что в `src`, — компилируй.
"exclude": ["node_modules", "**/*.test.ts"] // А это вот — **да похуй**, не трогай.
}
Если этого файла нет, tsc возьмёт настройки по умолчанию, и получится такая пиздопроебибна, что проще сразу на чистом JS писать. Так что не ленись, заведи его.