interface

Une description nommée de la forme d’un objet, que vous pouvez étendre et fusionner.

Sur cette page

Exemple

#
TypeScript
interface Course {
  id: number
  title: string
  modules: number
  describe(): string
}

const html: Course = {
  id: 1,
  title: 'HTML et CSS',
  modules: 11,
  describe() {
    return `${this.title}: ${this.modules} modules`
  }
}

console.log(html.describe())
Résultat
HTML et CSS: 11 modules

Définition et utilisation

#

Une interface donne un nom à la forme d’un objet : elle énumère ses champs et ses méthodes avec leurs types. Un objet est conforme à l’interface s’il possède les propriétés requises avec des types correspondants. Il n’a besoin d’aucune syntaxe spéciale pour être créé.

Vous pouvez étendre les interfaces avec le mot-clé extends, en construisant des types plus précis à partir de types généraux. Les classes peuvent les implémenter avec implements, ce qui garantit qu’elles possèdent les méthodes requises.

Une particularité des interfaces est la fusion de déclarations : deux interfaces portant le même nom se fondent en une seule. C’est ainsi que les bibliothèques permettent d’étendre leurs types depuis l’extérieur, par exemple en ajoutant des champs à l’objet Window.

Syntaxe

#
Syntaxe
interface Name {
  field: type
  method(param: type): type
}

Plus d’exemples

#
Fusion de déclarations
TypeScript
interface Settings {
  theme: 'dark' | 'light'
}

interface Settings {
  sounds: boolean
}

const settings: Settings = { theme: 'dark', sounds: true }
console.log(Object.keys(settings))
Résultat
['theme', 'sounds']

Bonnes pratiques

#
  • Pour décrire des objets et des contrats de classes, interface est le choix naturel. Pour les unions, les tuples et les types complexes, utilisez type.
  • Nommez les interfaces d’après ce que représente l’objet (User, Course), sans le préfixe I.

Entrées associées

#

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