# 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