# Directives de Développement TypeScript & Qualité ## 1. Principes Généraux - **Qualité & Solidité** : Code propre, explicite, auto-documenté. Pas de hacks ou de contournements temporaires. - **DRY & KISS** : Préférer la lisibilité et la simplicité à l'abstraction prématurée. - **Sécurité** : Validation systématique des données aux frontières de l'application (pas de données non vérifiées). Aucune clé ou secret en dur. ## 2. Standards TypeScript & Typage Strict - **Typage strict** : - `noImplicitAny` et `strictNullChecks` activés. - Interdiction d'utiliser le type `any`. Utiliser `unknown` avec du narrowing (type guards) si le type est incertain. - Préférer les `interface` pour les objets publics/extensibles et les `type` pour les unions, intersections et tuples. - Expliciter les types de retour des fonctions publiques et des méthodes d'API. - **Conventions de nommage** : - `PascalCase` pour les types, interfaces, classes et composants React/Vue. - `camelCase` pour les variables, fonctions et méthodes. - `SNAKE_CASE` pour les constantes globales. - Interfaces : Ne pas utiliser le préfixe `I` (écrire `User`, pas `IUser`). - **Gestion de l'asynchronisme** : - Préférer `async/await` aux promesses chaînées (`.then()`). - Toujours typer le retour des fonctions asynchrones : `Promise`. ## 3. Qualité, Linting & Formattage - **Structure** : Fichiers ciblés et courts (< 200-300 lignes). Découper en modules si nécessaire. - **Linter & Formateur** : Le code doit passer sans aucun warning ni erreur sous **ESLint** et **Prettier**. - **Gestion des erreurs** : - Pas de `try/catch` vides. - Utiliser des classes d'erreur personnalisées dérivant de `Error`. ## 4. Tests - **Règle absolue** : Tout nouveau code ou correctif doit être accompagné de ses tests (ex. **Vitest** ou **Jest**). - Exécuter la suite de tests avant toute validation. ## 5. Commandes du Projet - **Installation** : `npm install` (ou `pnpm install` / `yarn install`) - **Vérification de type** : `npx tsc --noEmit` - **Linter** : `npm run lint` - **Tests** : `npm test` - **Build** : `npm run build` ## 6. Format des Réponses de Claude - Proposer du code complet et directement exploitable. - Expliciter les choix de typage ou de refactorisation complexes.