Interfaces TypeScript, de la syntaxe à interface vs type

Interfaces TypeScript

Interface TypeScript : syntaxe, extends, fusion, vs type | We.Inc

Construisez une interface champ par champ, voyez l'alias de type équivalent, et découvrez les membres optionnels et readonly, extends, la fusion de déclarations et les cas où un alias de type convient mieux.

Une interface nomme la forme d'un objet : quelles propriétés il possède et quel type contient chacune. Rendez une propriété optionnelle avec ? et non modifiable avec readonly, appuyez-vous sur une autre forme avec extends, et redéclarez le même nom pour y fusionner d'autres membres. Les interfaces ne laissent aucune trace dans le JavaScript compilé, elles guident uniquement le vérificateur de types.

La syntaxe des interfaces en un coup d'œil

Ajoutez des champs dans le générateur ci-dessous, cochez optionnel ou readonly, et copiez l'interface ou l'alias de type équivalent. Les sections suivantes couvrent l'extension, la fusion et les quelques cas où le choix entre interface et type compte vraiment.

Questions fréquentes

Dois-je utiliser interface ou type ?

Pour les formes d'objets, les deux fonctionnent et le handbook parle surtout de préférence personnelle, en suggérant interface tant que vous n'avez pas besoin d'une fonctionnalité propre à type. Utilisez type pour les unions, les tuples, les primitives et les mapped ou conditional types, et interface quand vous voulez la fusion de déclarations.

Qu'est-ce que la fusion de déclarations ?

Déclarer une interface avec un nom qui existe déjà lui ajoute des membres au lieu d'échouer. Les bibliothèques s'appuient dessus pour vous permettre d'étendre leurs types, par exemple en ajoutant une propriété à Window. Un alias de type avec un nom répété provoque une erreur.

Que se passe-t-il si deux interfaces fusionnées donnent des types différents à une propriété ?

Le compilateur signale une erreur. Avec une intersection de deux types, le conflit n'est pas signalé à la déclaration : la propriété devient never, ce qui ne se manifeste que plus tard et est plus difficile à retrouver.

Une interface peut-elle décrire une fonction ou un tableau ?

Oui. Une signature d'appel comme (value: string): boolean décrit une fonction, et une index signature comme [index: number]: string décrit un objet de type tableau. Pour les cas simples, un alias de type comme type Check = (v: string) => boolean se lit plus clairement.

Les interfaces existent-elles à l'exécution ?

Non. Elles ne produisent aucun code compilé, vous ne pouvez donc pas utiliser instanceof avec une interface ni lister ses clés. Vérifiez les valeurs avec un garde à l'exécution et annotez son type de retour avec l'interface.

extends ou intersections

Optionnel, readonly et index signatures

Fusionner pour étendre les types globaux et ceux des bibliothèques

interface ou alias de type

Ce que chaque déclaration permet de faire

Les patterns que vous écrirez souvent

Étendre une ou plusieurs interfaces

Admin reçoit chaque membre de User plus les siens, Card combine deux formes sans rapport.

Fusion de déclarations sur Window

Placé dans un fichier .d.ts, ce code permet à window.appVersion de passer la vérification de types partout.

Index signature et signature d'appel

Scores accepte n'importe quelle clé string, Validator décrit une valeur appelable.

Générateur d'interface

Nom de l'interface

Extends (facultatif)

Nom de la propriété {n}

Type de la propriété {n}

Optionnelle

Readonly

Supprimer la propriété {n}

Ajouter une propriété

Sous forme d'interface

Sous forme d'alias de type

Copier l'interface

Copier le type

Les noms doivent commencer par une lettre, $ ou _ et ne contenir que des lettres, des chiffres, $ ou _.

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site