From afd73858b05d0311b98f14010143e2e4ca259356 Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Wed, 19 Nov 2025 10:12:20 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3?= =?UTF-8?q?=D1=83=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20TypeScript=205=20=D1=81?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D0=BE=D0=B9?= =?UTF-8?q?=20React=2019?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Настроен tsconfig.json со строгой проверкой типов - Добавлена документация на русском языке (tsconfig.README.md) - Automatic JSX runtime (react-jsx) - Алиасы путей для удобного импорта - Include src директории --- tsconfig.README.md | 93 ++++++++++++++++++++++++++++++++++++++++++++++ tsconfig.json | 33 ++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 tsconfig.README.md create mode 100644 tsconfig.json diff --git a/tsconfig.README.md b/tsconfig.README.md new file mode 100644 index 0000000..6ec777c --- /dev/null +++ b/tsconfig.README.md @@ -0,0 +1,93 @@ +# Документация tsconfig.json + +## Описание + +Конфигурация TypeScript компилятора для проекта only-task. +Определяет параметры компиляции TypeScript кода в JavaScript. + +## Основные настройки компилятора (compilerOptions) + +### Выходные файлы +- **outDir**: `./dist/` - Директория для скомпилированных файлов + +### Проверка типов +- **noImplicitAny**: `true` - Запрет неявного типа `any` +- **strict**: `true` - Включить все строгие проверки типов + +### Модули +- **module**: `ESNext` - Использование современных ES модулей +- **target**: `es5` - Компиляция в ES5 для максимальной совместимости с браузерами +- **moduleResolution**: `node` - Разрешение модулей как в Node.js + +### React и JSX +- **jsx**: `react-jsx` - Автоматический JSX transform для React 19 + - Не требует импорта React в каждом файле + - Использует новый JSX runtime + +### Совместимость +- **allowJs**: `true` - Разрешить импорт `.js` файлов в TypeScript +- **esModuleInterop**: `true` - Совместимость с CommonJS модулями +- **allowSyntheticDefaultImports**: `true` - Разрешить default импорты из модулей без default export + +### Пути и алиасы +- **baseUrl**: `.` - Базовый путь для разрешения модулей +- **paths**: Настройка алиасов для импортов + ```json + { + "*": ["./src/*"] + } + ``` + Позволяет импортировать файлы из `src` без указания полного пути + +## Настройки ts-node + +Специальные настройки для выполнения TypeScript файлов через ts-node (используется webpack для загрузки webpack.config.ts): + +```json +{ + "compilerOptions": { + "module": "CommonJS" + } +} +``` + +## Включенные и исключенные файлы + +### include +- `src` - Включить все файлы из директории src для компиляции + +### exclude +- `.fttemplates/**/*` - Исключить шаблоны +- `node_modules` - Исключить зависимости +- `dist` - Исключить скомпилированные файлы + +## Примеры использования + +### Проверка типов +```bash +pnpm type-check +``` + +### Использование алиасов путей +```typescript +// Вместо: +import { Button } from '../../../components/Button' + +// Можно писать: +import { Button } from 'components/Button' +``` + +### JSX без импорта React +```typescript +// React 19 с автоматическим JSX transform +// Не нужно импортировать React! +const App = () => { + return
Hello World
+} +``` + +## Связанные файлы +- `webpack.config.ts` - использует эту конфигурацию +- `eslint.config.mjs` - проверяет TypeScript код +- `src/**/*.ts` - исходные TypeScript файлы +- `src/**/*.tsx` - исходные React компоненты diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..cecef11 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,33 @@ +{ + "compilerOptions": { + "outDir": "./dist/", + "noImplicitAny": true, + "module": "ESNext", + "target": "es5", + "jsx": "react-jsx", + "allowJs": true, + "moduleResolution": "node", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "baseUrl": ".", + "paths": { + "*": [ + "./src/*" + ] + }, + "strict": true + }, + "ts-node": { + "compilerOptions": { + "module": "CommonJS" + } + }, + "include": [ + "src" + ], + "exclude": [ + ".fttemplates/**/*", + "node_modules", + "dist" + ] +} \ No newline at end of file