tsconfig.json
npm create vite@latest . -- --template vanilla-ts
BASE:
{
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true
},
"include": ["src"],
"types": ["vite/client"]
}
CURRENT:
{
"compilerOptions": {
//? Настройки версии JavaScript
// Компилирует код в последнюю версию JavaScript. Возможные значения: "ES5", "ES6", "ES2017", "ESNext".
"target": "ESNext",
// Определяет, какой модульный стандарт используется (CommonJS, ESNext, AMD и др.).
//! В браузере лучше "ESNext", в Node.js — "CommonJS".
"module": "ESNext",
// Разрешает модули так, как это делает Node.js.
"moduleResolution": "node",
//? Библиотеки и окружение
// Определяет, какие API доступны (например, DOM для работы в браузере).
"lib": ["ESNext", "DOM", "DOM.Iterable"],
//? Проверки и строгий режим
// Включает все строгие проверки TypeScript (аналог набора из noImplicitAny, strictNullChecks, strictFunctionTypes и др.).
"strict": true,
// Запрещает использование any без явного указания.
"noImplicitAny": true,
// Запрещает использование null и undefined без явного указания в типах.
"strictNullChecks": true,
// Улучшает проверку типов для функций.
"strictFunctionTypes": true,
// Запрещает неявное использование this без контекста.
"noImplicitThis": true,
// Показывает ошибку, если переменная объявлена, но не используется.
"noUnusedLocals": true,
// Показывает ошибку, если параметр функции объявлен, но не используется.
"noUnusedParameters": true,
// Запрещает пропуск break в switch.
"noFallthroughCasesInSwitch": true,
//? Работа с файлами
// Запрещает компилировать .js файлы (если true, TypeScript сможет работать и с JavaScript).
"allowJs": true,
// Если true, TypeScript проверяет типы в .js файлах.
"checkJs": false,
//? Настройки вывода
// Указывает папку для скомпилированных файлов (.js и .d.ts). "dist"
"outDir": "./dist",
// Указывает корневую папку исходных файлов. "src"
"rootDir": "./src",
//? Разрешение модулей
// Базовый путь для модулей. "./"
"baseUrl": "./src",
// Позволяет использовать алиасы для импортов (например, @components/Button вместо ../../components/Button).
"paths": {
"@/*": ["./*"],
"@/assets": ["assets/*"],
"@/components": ["components/*"],
"@/models": ["models/*"],
"@/pages": ["pages/*"],
"@/plugins": ["plugins/*"],
"@/scripts": ["scripts/*"],
"@/libs": ["libs/*"],
"@/dto": ["dto/*"]
},
//? Генерация файлов
// Позволяет импортировать JSON-файлы.
"resolveJsonModule": true,
// Разрешает import x from "module", даже если модуль экспортируется как module.exports.
"allowSyntheticDefaultImports": true,
// Генерирует .d.ts файлы (используется для создания библиотек).
"declaration": true,
// Создаёт .map файлы, которые помогают отлаживать TypeScript-код в браузере.
"sourceMap": true,
// Принудительно распознаёт модули в файлах даже без import/export.
"moduleDetection": "force",
// Меняет способ трансляции полей классов в JavaScript. Использует Object.defineProperty() для определения полей классов.
"useDefineForClassFields": true,
// Используется для сборки многомодульных проектов (TypeScript Project References).
// Позволяет использовать этот проект как зависимость в других TypeScript-проектах.
//! Требует "declaration": true (генерацию .d.ts файлов).
"composite": true,
//Указывает папку для файлов деклараций (.d.ts).
// Вместо того, чтобы генерировать .d.ts рядом с .js, они будут в ./dist/types.
//! Работает только если declaration: true.
//"declarationDir": "./dist/types",
// Позволяет импортировать .ts файлы с расширением (ESM-стиль).
// Разрешает import "./module.ts" в коде, даже если TypeScript обычно не требует .ts.
// import { something } from "./utils.ts"; // Без этой опции TypeScript выдаст ошибку
"allowImportingTsExtensions": false,
// Запрещает пропуск return в функциях, если они должны что-то возвращать.
// Показывает ошибку, если в функции не все ветки кода возвращают значение.
"noImplicitReturns": true,
// Запрещает TypeScript создавать .js файлы при компиляции. true- не создает
// TypeScript только проверяет код на ошибки, но НЕ генерирует .js.
// Полезно, если код компилирует Vite/ESBuild/Webpack.
"noEmit": false,
// Гарантирует, что TypeScript-компилятор работает по-файлово, как ESBuild или Babel.
// Запрещает использовать TypeScript-фичи, которые требуют полного анализа проекта (например, const enum).
//! Требуется Vite (из-за ESBuild).
"isolatedModules": true,
// Пропускает проверку типов в node_modules. (Ускоряет компиляцию, Позволяет избежать ошибок в зависимостях.)
// import express from "express"; // ❌ Ошибка, если в Express есть несовместимые типы
"skipLibCheck": true,
// Гарантирует, что файлы импортируются с правильным регистром.
// Предотвращает ошибки при сборке в Linux/Mac (где file.ts ≠ File.ts).
// import { something } from "./Utils.ts"; // ❌ Ошибка, если файл `utils.ts`
"forceConsistentCasingInFileNames": true
},
//? References
// Используется в больших проектах, где есть несколько независимых модулей.
// "references": [ { "path": "./packages/core" }, { "path": "./packages/ui" }]
// Так можно разделить код на модули и компилировать их отдельно.
"references": [{ "path": "./tsconfig.node.json" }],
//? Include
// Включает все файлы в папке src в компиляцию. "src"
//"include": ["src/**/*.ts"],
"include": ["src"],
//? Exclude
// Исключает файлы из компиляции. "exclude": ["node_modules", "dist"]
//! исключаем js файлы ❌Cannot write file 'e:/umserv/html2025/eslint.config.js' because it would overwrite input file.ts
"exclude": ["node_modules", "dist", "sass-build.js", "eslint.config.js"],
//? Files
// Если указан, компилирует только перечисленные файлы. "files": ["src/index.ts"]
//"files": [],
//? Types
// Определяет, какие файлы деклараций (.d.ts) TypeScript должен загружать.
// "vite/client" Это включает глобальные типы Vite, такие как: console.log(import.meta.env.VITE_API_URL);
// Можно подключить собственные .d.ts файлы: {"compilerOptions": {"types": ["vite/client", "./src/types/global"] } }
//! Загружает ТОЛЬКО указанные .d.ts файлы (например, vite/client).
"types": ["vite/client"]
// Определяет папки, где искать .d.ts файлы (например, node_modules/@types).
//! Если "types" задан, то "typeRoots" игнорируется.
//"typeRoots": []
//? Extends
// Позволяет наследовать настройки из другого файла.
//"extends": ""
}
No Comments