extends (interfaces)
Étendre une interface avec de nouveaux champs, à partir d’une interface existante.
Exemple
#interface Person {
name: string
email: string
}
interface Student extends Person {
level: number
}
interface Mentor extends Person {
specialization: string
}
const student: Student = { name: 'Emma', email: 'emma@example.com', level: 3 }
const mentor: Mentor = { name: 'Hugo', email: 'hugo@example.com', specialization: 'React' }
console.log(`${student.name} apprend avec ${mentor.name} (${mentor.specialization})`)Emma apprend avec Hugo (React)
Définition et utilisation
#Le mot-clé extends permet de construire une interface à partir d’une autre. La nouvelle interface hérite de tous les champs de l’interface de base et ajoute les siens. Vous pouvez étendre plusieurs interfaces à la fois, en les séparant par des virgules.
Cela évite de répéter les champs communs à plusieurs types. Par exemple, Student et Mentor peuvent tous les deux étendre un Person commun avec un nom et une adresse e-mail.
Une interface qui étend une autre peut restreindre le type d’un champ de base (par exemple de string vers une union de littéraux), mais elle ne peut pas le changer en un type incompatible.
Syntaxe
#interface Derived extends Base, Second {
newField: type
}Bonnes pratiques
#- Extrayez les champs communs vers une interface de base, mais ne construisez pas de hiérarchies profondes. Deux ou trois niveaux suffisent.
- Avec les alias
type, le même effet s’obtient par intersection :type Student = Person & { level: number }.
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.
- implementsUne déclaration indiquant qu’une classe respecte le contrat décrit par une interface.
- Contraintes génériques (extends)Exiger qu’un paramètre de type respecte une forme précise.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.