implements

Une déclaration indiquant qu’une classe respecte le contrat décrit par une interface.

Sur cette page

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

#
Méthode manquante
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

#
  • implements ne 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

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.