253 votes

Quand utiliser l’Interface et le modèle en caractères dactylographiés / Angular2

Récemment, j’ai regardé un tutoriel sur 2 angulaire avec texte dactylographié, mais ne sachant pas quand utiliser une Interface et quand utiliser un modèle pour conserver les données aux structures.

Exemple d’interface :

Exemple de modèle :

Je veux charger données JSON à partir d’une URL et lier à l’Interface/modèle. Parfois, je veux un objet de données unique, autre moment que je veux conserver et tableau de l’objet.

Que l'on dois j’utiliser et pourquoi ?

168voto

thierry templier Points 998

Les Interfaces sont seulement au moment de la compilation. Cela vous permet seulement de vérifier que les données attendues reçu suit une structure particulière. Pour cela, vous pouvez lancer votre contenu à cette interface:

this.http.get('...')
    .map(res => <Product[]>res.json());

Voir ces questions:

Vous pouvez faire quelque chose de similaire avec classe, mais les principales différences avec la classe qu'ils sont présents au moment de l'exécution (fonction constructeur) et vous pouvez définir des méthodes de traitement. Mais, dans ce cas, vous devez instancier des objets pour pouvoir les utiliser:

this.http.get('...')
    .map(res => {
      var data = res.json();
      return data.map(d => {
        return new Product(d.productNumber,
          d.productName, d.productDescription);
      });
    });

50voto

pietro909 Points 1243

L' Interface décrit soit un contrat pour une classe ou un nouveau type. C’est un élément de texte dactylographié pur, donc cela n’affecte pas Javascript.

Un modèle, à savoir une classe, est une fonction JS réelle qui est utilisée pour générer de nouveaux objets.

Je veux charger données JSON à partir d’une URL et lier à l’Interface/modèle.

Optez pour un modèle, sinon qu'il sera toujours être JSON dans votre Javascript.

5voto

M.Farahmand Points 303

Comme @ThierryTemplier dit pour recevoir les données du serveur et transmettant modèle entre les composants (pour garder liste intellisense et faire erreur de temps de conception), il est bon d’utiliser l’interface mais je pense que pour l’envoi des données au serveur (DTO) il est préférable d’utiliser la classe pour prendre avantages de l’auto, cartographie DTO de modèle.

-30voto

Sajith Mantharath Points 498

Utilisation de la Classe au lieu de l'Interface qu'est ce que j'ai découvert après toutes mes recherches.

Pourquoi? Une classe à lui seul est moins de code que d'une classe et d'interface. (de toute façon vous pouvez avoir besoin d'une Classe de modèle de données)

Pourquoi? Une classe peut agir comme une interface (utilisation met en œuvre au lieu de s'étend).

Pourquoi? Une interface de classe peut être un fournisseur de recherche jeton Angulaire de l'injection de dépendances.

Angulaires Guide de Style

Fondamentalement, une Classe peut tout faire, ce qu'une Interface se faire. Donc peut-être jamais besoin d'utiliser une Interface.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X