103 votes

Lorsque vous utilisez une interface ou une classe dans Typescript

J'ai un scénario simple de connexion qui nécessite la saisie par l'utilisateur d'un e-mail et d'un mot de passe dans Typescript. J'ai besoin de créer un type pour obtenir ce type fort et l'envoyer au back-end.

Devrait-il être écrit comme suit:

 export interface UserLogin {
  email: string;
  password: string;
}
//OR
export class UserLogin {
  email: string;
  password: string;
}
 

Et comment savoir quand est le scénario pour utiliser l'un de ces éléments?

112voto

alephnerd Points 636

Il est plus de base, une classe est essentiellement un objet de l'usine (c'est à dire. un modèle de ce qu'un objet est censé ressembler à la mise en œuvre), alors qu'une interface est une structure exclusivement utilisées pour la vérification de type.

Alors qu'une classe peut avoir initialisé les propriétés et les méthodes pour aider à créer des objets, une interface essentiellement définit les propriétés et le type d'un objet peut avoir.

Dans le scénario que vous avez décrit, on peut utiliser une interface pour définir le type de UserLogin.

34voto

Yakov Fain Points 823

Si vous avez juste besoin de déclarer un type personnalisé, utilisez des interfaces. OMI, il y a une raison très pragmatique - ils ne sont pas transposés en JavaScript donc le code généré est plus court.

Les interfaces ne fonctionneront pas si vous devez instancier des objets avec des constructeurs ou utiliser un framework qui les instancie et les injecte. Utilisez ensuite des classes ou des classes abstraites.

9voto

D. Phi Points 307

En fait, les deux vont faire le travail. Je vous suggère d'utiliser des interfaces bien que si vous venez de faire la vérification de type car il est spécifiquement conçu pour cet usage.

Les Classes et les interfaces sont de puissantes structures qui facilitent non seulement la programmation orientée objet, mais aussi la vérification de type à la Machine. Une classe est un modèle de référence à partir de laquelle nous pouvons créer des objets qui partagent la même configuration des propriétés et des méthodes. Une interface est un ensemble de propriétés et de méthodes qui décrivent un objet, mais ne fournit de mise en œuvre, ni d'initialisation pour eux.

De: https://toddmotto.com/classes-vs-interfaces-in-typescript

5voto

artem Points 269

l'envoyer à la fin

Classes d'envoi sur le fil exige un effort supplémentaire - si vous utilisez JSON type de contenu, de votre classe viendra comme un simple objet de votre code back-end. Voir de nombreuses réponses à cette question en racontant comment convertir JSON retour à un objet de classe de sorte qu'il est possible d'appeler ses méthodes.

Mais depuis la classe dans votre question n'a pas de méthodes, il n'est pas question, à moins que le code du back-end va effectuer d'exécution vérifie à l'aide de instanceof.

Pour éviter ces problèmes, l'utilisation de l'interface qui ne dispose que de données des membres pour représenter des objets pour communiquer avec le back-end.

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