Chapitre 2 · Leçon 2
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
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}Activer le mode strict sur un projet existant peut être douloureux. Commence toujours avec strict: true — c'est bien plus facile à maintenir.
snippet.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 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.