interface
Une description nommée de la forme d’un objet, que vous pouvez étendre et fusionner.
Exemple
#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())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
#interface Name {
field: type
method(param: type): type
}Plus d’exemples
#interface Settings {
theme: 'dark' | 'light'
}
interface Settings {
sounds: boolean
}
const settings: Settings = { theme: 'dark', sounds: true }
console.log(Object.keys(settings))['theme', 'sounds']
Bonnes pratiques
#- Pour décrire des objets et des contrats de classes,
interfaceest le choix naturel. Pour les unions, les tuples et les types complexes, utiliseztype. - Nommez les interfaces d’après ce que représente l’objet (
User,Course), sans le préfixeI.
Entrées associées
#- interface vs typeinterface décrit la forme d’un objet et fusionne avec une déclaration du même nom, tandis que type est un alias pour tout type, y compris les unions et les tuples.
- typeUn alias de type : un nom pour n’importe quel type, y compris les unions, les tuples et les types complexes.
- extends (interfaces)Étendre une interface avec de nouveaux champs, à partir d’une interface existante.
- implementsUne déclaration indiquant qu’une classe respecte le contrat décrit par une interface.
- Propriétés optionnelles (?)Des propriétés qui peuvent, mais ne doivent pas obligatoirement, apparaître dans un objet.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.