Typescript
Types
Interfaces
Contrats
Oop
Comprendre la différence entre types et interfaces en TypeScript et savoir quand les utiliser.
Types vs Interfaces : les différences
Les types et les interfaces sont deux façons de décrire la structure d'objets en TypeScript. Elles se ressemblent beaucoup mais ont des différences importantes.
À retenir : Les interfaces sont extensibles et fusion-nables. Les types sont plus flexibles pour les unions et intersections.
Qu'est-ce qu'un type ?
type User = { id: number; name: string; email: string; }; type Admin = User & { role: 'admin'; permissions: string[]; };
Qu'est-ce qu'une interface ?
interface User { id: number; name: string; email: string; } interface Admin extends User { role: 'admin'; permissions: string[]; }
Structural typing
TypeScript utilise le structural typing : deux types sont compatibles s'ils ont la même structure.
interface Duck { quack(): void; } class Dog { quack() { console.info('Woof!'); } } const duck: Duck = new Dog(); // OK!
Union et Intersection types
// Union type (OR) type Status = 'pending' | 'completed' | 'failed'; // Intersection type (AND) type Named = { name: string }; type Aged = { age: number }; type Person = Named & Aged;
Quand utiliser quoi
| Aspect | Type | Interface |
|---|---|---|
| Union | ✓ Oui | ✗ Non |
| Intersection | ✓ Oui | ✓ Oui (extends) |
| Primitives | ✓ Oui | ✗ Non |
| OOP | ✗ | ✓ |
Bonnes pratiques
- Utilisez
interfacepour OOP et contrats - Utilisez
typepour les unions et primitives - Préférez interface pour la documentation