TypeScriptInterfaces et classes
implements
Une déclaration indiquant qu’une classe respecte le contrat décrit par une interface.
Exemple
#TypeScript
interface Scorable {
score(): number
}
class Quiz implements Scorable {
constructor(private correct: number, private total: number) {}
score(): number {
return Math.round((this.correct / this.total) * 100)
}
}
const quiz = new Quiz(8, 10)
console.log(`Score : ${quiz.score()}%`)Résultat
Score : 80%
Définition et utilisation
#Le mot-clé implements après le nom d’une classe indique au compilateur que la classe doit posséder tous les champs et méthodes de l’interface donnée. S’il en manque un, ou si les types ne correspondent pas, une erreur apparaît.
Cette vérification ne concerne que les types : implements n’hérite d’aucun code. La classe doit implémenter elle-même toutes les méthodes. Pour hériter du code, utilisez extends entre classes.
Une classe peut implémenter plusieurs interfaces à la fois, ce qui permet de décrire des capacités indépendantes, par exemple Serializable et Comparable.
Syntaxe
#Syntaxe
class Name implements Interface1, Interface2 {
…
}Plus d’exemples
#TypeScript
class Exam implements Scorable {}
// Erreur : Class 'Exam' incorrectly implements interface 'Scorable'.
// Property 'score' is missing in type 'Exam' but required in type 'Scorable'.Bonnes pratiques
#implementsne change pas les types à l’intérieur de la classe. Vous devez quand même typer les paramètres des méthodes dans la classe elle-même.- Les interfaces qui décrivent des capacités (ce que l’objet sait faire) se combinent mieux qu’une hiérarchie profonde de classes.
Entrées associées
#- extends vs implementsextends hérite des champs et du code d’une classe de base, tandis que implements exige seulement les méthodes et les champs de l’interface, sans en reprendre le code.
- interfaceUne description nommée de la forme d’un objet, que vous pouvez étendre et fusionner.
- abstract classUne classe de base que vous ne pouvez pas créer directement, avec des méthodes à compléter par ses descendants.
- public, private, protectedDes modificateurs d’accès qui déterminent d’où les champs et méthodes d’une classe peuvent être utilisés.
- extends (interfaces)Étendre une interface avec de nouveaux champs, à partir d’une interface existante.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.