107 lines
3.8 KiB
Markdown
107 lines
3.8 KiB
Markdown
# Документация 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/*"]
|
||
}
|
||
```
|
||
Позволяет импортировать файлы из `src` с использованием `@/` или без префикса
|
||
|
||
### Типы
|
||
- **types**: Глобальные типы для проекта
|
||
```json
|
||
["node", "jest", "@testing-library/jest-dom"]
|
||
```
|
||
- `node` - типы Node.js API
|
||
- `jest` - типы для Jest тестов
|
||
- `@testing-library/jest-dom` - типы для дополнительных матчеров Jest
|
||
|
||
## Настройки 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 '../../../shared/ui/Button'
|
||
|
||
// Можно писать с @ алиасом:
|
||
import { Button } from '@/shared/ui/Button'
|
||
|
||
// Или без префикса (для совместимости):
|
||
import { Button } from 'shared/ui/Button'
|
||
```
|
||
|
||
### JSX без импорта React
|
||
```typescript
|
||
// React 19 с автоматическим JSX transform
|
||
// Не нужно импортировать React!
|
||
const App = () => {
|
||
return <div>Hello World</div>
|
||
}
|
||
```
|
||
|
||
## Связанные файлы
|
||
- `webpack.config.ts` - использует эту конфигурацию
|
||
- `eslint.config.mjs` - проверяет TypeScript код
|
||
- `src/**/*.ts` - исходные TypeScript файлы
|
||
- `src/**/*.tsx` - исходные React компоненты
|