Builders Academy
TypeScript — Du typage statique au niveau avancé
4 of 4

Chapitre 2 · Leçon 2

tsconfig & bonnes pratiques

Configurer TypeScript pour la production

Une bonne configuration TypeScript est aussi importante que le code lui-même. Le tsconfig.json contrôle la rigueur du compilateur et les options de build.

tsconfig.json recommandé pour Next.js/Node.js

tsconfig.json

json
1{
2  "compilerOptions": {
3    "target": "ES2022",
4    "lib": ["ES2022", "DOM"],
5    "module": "ESNext",
6    "moduleResolution": "bundler",
7    "jsx": "preserve",
8
9    // Strict mode — active tout le typage rigoureux
10    "strict": true,
11    "noUncheckedIndexedAccess": true,  // arr[0] peut être undefined
12    "noImplicitReturns": true,          // toutes les branches doivent retourner
13    "noFallthroughCasesInSwitch": true,
14
15    // Imports
16    "esModuleInterop": true,
17    "resolveJsonModule": true,
18    "allowImportingTsExtensions": true,
19
20    // Path aliases — plus de ../../..
21    "baseUrl": ".",
22    "paths": {
23      "@/*": ["./src/*"],
24      "@components/*": ["./src/components/*"],
25      "@lib/*": ["./src/lib/*"],
26      "@types/*": ["./src/types/*"]
27    },
28
29    "skipLibCheck": true,
30    "noEmit": true
31  },
32  "include": ["src/**/*", "next.config.ts"],
33  "exclude": ["node_modules"]
34}
Active strict: true dès le début

Activer le mode strict sur un projet existant peut être douloureux. Commence toujours avec strict: true — c'est bien plus facile à maintenir.

Patterns à éviter absolument

snippet.typescript

typescript
1// ❌ any — abandonne tout le typage
2function process(data: any) { return data.value; }
3
4// ✅ unknown — force à vérifier le type avant d'utiliser
5function process(data: unknown) {
6  if (typeof data === "object" && data !== null && "value" in data) {
7    return (data as { value: string }).value;
8  }
9  throw new Error("Format invalide");
10}
11
12// ❌ as casting sans vérification — dangereux
13const user = response.data as User;
14
15// ✅ Validation avec Zod — runtime + typage
16import { z } from "zod";
17const UserSchema = z.object({
18  id: z.string(),
19  name: z.string(),
20  email: z.string().email(),
21});
22const user = UserSchema.parse(response.data); // throws si invalide
23// type de user inféré automatiquement comme { id: string; name: string; email: string }

TypeScript — résumé

TypeScript n'est pas juste des annotations — c'est un système de raisonnement sur le code. strict: true, génériques à la place de any, Zod pour la validation runtime. Ces trois habitudes transforment la maintenabilité de ton code.

Topics and skills covered

  • TypeScript
  • tsconfig
  • Strict mode
  • Path aliases