Tapuscrit: Interfaces vs Types
Quelle est la différence entre ces états (interface vs type)?
interface X {
a: number
b: string
}
type X = {
a: number
b: string
};
- Trouvé cet article pour expliquer les différences - medium.com/@martin_hotell/...
Vous devez vous connecter pour publier un commentaire.
Que par la Tapuscrit Langage De Spécification:
La spécification cite:
extends or implements
n'est plus le cas. Le Type peut être étendu et mis en œuvre par unclass
. Voici un exemple typescriptlang.org/play/...type
s trop. Considérez les points suivants:type PartialPerson = { firstName: string; }; type Person = PartialPerson & { lastName: string; };
...bien, je ne le recommanderais pas. : )2019 mise à Jour
Le courant des réponses et la la documentation officielle sont obsolètes. Et pour ceux qui sont nouveaux à la Machine, la terminologie utilisée n'est pas clair sans exemples. Ci-dessous est une liste à jour des différences.
1. Objets /Fonctions
À la fois peut être utilisé pour décrire la forme d'un objet ou d'une fonction de signature. Mais la syntaxe diffère.
Interface
Alias de Type
2. D'Autres Types De
Contrairement à une interface, le type d'alias peut également être utilisé pour d'autres types tels que les primitives, les syndicats, et les tuples.
3. Étendre
À la fois peut être étendue, mais encore une fois, la syntaxe est différente. En outre, notez que l'interface et le type d'alias ne sont pas mutuellement exclusives. Une interface peut étendre un type d'alias, et vice versa.
Interface étend l'interface
Alias de Type étend alias de type
Interface étend alias de type
Alias de Type étend l'interface
4. Met en œuvre
Une classe peut implémenter une interface ou un alias de type, à la fois de la même manière exacte. À noter toutefois qu'une classe et d'interface sont considérées comme statique des modèles. Par conséquent, ils ne peuvent pas mettre en œuvre /étendre un type alias de noms un type d'union.
5. Déclaration de la fusion
Contrairement à un alias de type, une interface peut être défini à plusieurs reprises, et seront traités comme une seule et même interface (avec les membres de toutes les déclarations d'être fusionnées).
De la Machine 3.2 (Novembre 2018), la suivante est vraie:
https://www.typescriptlang.org/docs/handbook/advanced-types.html
Exemples de Types:
//création de l'arborescence de la structure d'un objet. Vous ne pouvez pas faire la même chose avec l'interface en raison de l'absence d'intersection (&)
//type de restreindre une variable à affecter à seulement quelques valeurs. Les Interfaces n'ont pas d'union (|)
//merci de types, vous pouvez déclarer accepte pas les valeurs null type grâce à un mécanisme conditionnel.
Exemples de l'Interface:
//vous pouvez utiliser l'interface pour la programmation orientée objet et utiliser "met en œuvre" pour définir l'objet/classe squelette
//vous pouvez étendre les interfaces avec d'autres interfaces