OUJOOD.COM
🎯 Pourquoi utiliser une interface avec une classe ?
- Pour s’assurer que toutes les classes respectent la même structure
- Pour favoriser la réutilisabilité et la documentation implicite
- Pour permettre une programmation orientée contrat
🧱 Définir une interface pour une classe
interface Affichable {
afficher(): string;
}
class Produit implements Affichable {
constructor(public nom: string, public prix: number) {}
afficher(): string {
return \`\${this.nom} coûte \${this.prix} €\`;
}
}
const p = new Produit("Clavier", 49.99);
console.log(p.afficher());
interface Affichabledéfinit une méthodeafficher()class Produit implements Affichableoblige la classe à fournir cette méthode- Si la méthode est absente ou incorrecte, TypeScript affiche une erreur
🔗 Interface avec plusieurs propriétés et méthodes
interface Utilisateur {
nom: string;
age: number;
sePresenter(): string;
}
class Admin implements Utilisateur {
constructor(public nom: string, public age: number) {}
sePresenter(): string {
return \`Je suis l'admin \${this.nom}, j'ai \${this.age} ans.\`;
}
}
- L’interface
Utilisateurdéfinit les propriétés et une méthode - La classe
Admindoit implémenter toutes les parties de l’interface
🧬 Interface vs Classe abstraite
Une interface ne contient pas de logique. Si tu veux un modèle avec logique partielle, il faudra utiliser une classe abstraite (vue dans un prochain chapitre).
🔁 Implémenter plusieurs interfaces
interface Identifiable {
id: number;
}
interface Affichable {
afficher(): string;
}
class Article implements Identifiable, Affichable {
constructor(public id: number, public nom: string) {}
afficher(): string {
return \`Article n°\${this.id} : \${this.nom}\`;
}
}
- Une classe peut implémenter plusieurs interfaces, séparées par une virgule
- Elle doit respecter les contrats cumulés de toutes les interfaces
📌 Résumé
interfacedéfinit une structure à respecterimplementsforce une classe à respecter cette structure- Utilisation idéale pour garantir des comportements partagés
- Une classe peut implémenter plusieurs interfaces à la fois
🧭 Prochaine étape
Dans le prochain chapitre, nous allons aborder les **classes abstraites**, qui permettent de combiner des comportements concrets et des parties à implémenter.
Souhaites-tu passer au Chapitre 5 du Module 2 : Classes abstraites en TypeScript ?