feat: конфигурация TypeScript 5 с поддержкой React 19
- Настроен tsconfig.json со строгой проверкой типов - Добавлена документация на русском языке (tsconfig.README.md) - Automatic JSX runtime (react-jsx) - Алиасы путей для удобного импорта - Include src директории
This commit is contained in:
93
tsconfig.README.md
Normal file
93
tsconfig.README.md
Normal file
@@ -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 <div>Hello World</div>
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Связанные файлы
|
||||||
|
- `webpack.config.ts` - использует эту конфигурацию
|
||||||
|
- `eslint.config.mjs` - проверяет TypeScript код
|
||||||
|
- `src/**/*.ts` - исходные TypeScript файлы
|
||||||
|
- `src/**/*.tsx` - исходные React компоненты
|
||||||
33
tsconfig.json
Normal file
33
tsconfig.json
Normal file
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user