76 lines
3.1 KiB
Markdown
76 lines
3.1 KiB
Markdown
# Configuration stricte TypeScript et ESLint
|
|
|
|
## Règles TypeScript strictes (tsconfig.json)
|
|
|
|
### Activées :
|
|
- ✅ `strict: true` - Mode strict complet
|
|
- ✅ `noUnusedLocals: true` - Variables locales non utilisées = erreur
|
|
- ✅ `noUnusedParameters: true` - Paramètres non utilisés = erreur
|
|
- ✅ `noImplicitReturns: true` - Return explicite requis
|
|
- ✅ `noFallthroughCasesInSwitch: true` - Pas de fallthrough dans switch
|
|
- ✅ `noUncheckedIndexedAccess: true` - Accès aux tableaux/objets vérifiés
|
|
- ✅ `noImplicitOverride: true` - Override explicite requis
|
|
- ✅ `exactOptionalPropertyTypes: true` - Types optionnels exacts
|
|
|
|
### Règles ESLint strictes (.eslintrc.json)
|
|
|
|
#### TypeScript avec informations de type :
|
|
- ✅ `@typescript-eslint/no-floating-promises: error` - Promesses non gérées = erreur
|
|
- ✅ `@typescript-eslint/no-misused-promises: error` - Promesses mal utilisées = erreur
|
|
- ✅ `@typescript-eslint/await-thenable: error` - Await sur non-promesse = erreur
|
|
- ✅ `@typescript-eslint/no-unnecessary-type-assertion: error` - Assertions inutiles = erreur
|
|
- ✅ `@typescript-eslint/no-non-null-assertion: error` - Non-null assertions interdites
|
|
- ✅ `@typescript-eslint/prefer-nullish-coalescing: error` - Force `??` au lieu de `||`
|
|
- ✅ `@typescript-eslint/prefer-optional-chain: error` - Force l'optional chaining
|
|
- ✅ `@typescript-eslint/no-non-null-asserted-optional-chain: error` - Chaînage + assertion interdite
|
|
- ✅ `@typescript-eslint/no-explicit-any: error` - `any` explicite interdit
|
|
|
|
#### Variables et code mort :
|
|
- ✅ `@typescript-eslint/no-unused-vars: error` - Variables non utilisées = erreur (sauf `_*`)
|
|
|
|
#### Bonnes pratiques JavaScript/TypeScript :
|
|
- ✅ `prefer-const: error` - Force `const` quand possible
|
|
- ✅ `no-var: error` - Interdit `var`
|
|
- ✅ `object-shorthand: error` - Force la syntaxe raccourcie
|
|
- ✅ `prefer-template: error` - Force les template literals
|
|
- ✅ `eqeqeq: error` - Force `===` et `!==`
|
|
- ✅ `curly: error` - Force les accolades dans if/for
|
|
- ✅ `no-throw-literal: error` - Interdit de throw des primitives
|
|
- ✅ `no-return-await: error` - Interdit `return await`
|
|
|
|
#### React :
|
|
- ✅ `react-hooks/rules-of-hooks: error` - Règles des hooks strictes
|
|
- ✅ `react-hooks/exhaustive-deps: error` - Dépendances des hooks strictes
|
|
|
|
#### Console/Debug :
|
|
- ✅ `no-console: warn` - Console interdit (sauf warn/error)
|
|
- ✅ `no-debugger: error` - Debugger interdit
|
|
- ✅ `no-alert: error` - Alert interdit
|
|
|
|
#### Longueur de code :
|
|
- ✅ `max-lines: error` - Max 250 lignes par fichier
|
|
- ✅ `max-lines-per-function: error` - Max 40 lignes par fonction
|
|
|
|
## Configuration ParserOptions
|
|
|
|
Pour activer les règles TypeScript avec type information :
|
|
```json
|
|
{
|
|
"parser": "@typescript-eslint/parser",
|
|
"parserOptions": {
|
|
"ecmaVersion": 2020,
|
|
"sourceType": "module",
|
|
"project": "./tsconfig.json"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Objectif
|
|
|
|
Le but n'est PAS d'éviter les erreurs, mais d'avoir une **très haute qualité de code** en :
|
|
- Détectant les bugs avant l'exécution
|
|
- Forçant les bonnes pratiques
|
|
- Éliminant le code mort
|
|
- Garantissant la sécurité des types
|
|
- Prévenant les erreurs courantes
|