Maison > interface Web > js tutoriel > Comment s'assurer qu'un objet ne contient que des propriétés définies dans son interface lors de son passage via angulaire.toJson ?

Comment s'assurer qu'un objet ne contient que des propriétés définies dans son interface lors de son passage via angulaire.toJson ?

Mary-Kate Olsen
Libérer: 2024-10-31 16:28:02
original
245 Les gens l'ont consulté

How can we ensure that an object only contains properties defined in its interface when passing it through angular.toJson?

Assurer la conformité des objets avec l'interface : supprimer les propriétés superflues

Les interfaces TypeScript définissent les spécifications contractuelles pour les classes ou les objets. Cependant, lors de l'implémentation, des propriétés supplémentaires peuvent être ajoutées au-delà de celles définies par l'interface, entraînant des incohérences. Résoudre ce problème devient crucial, en particulier lors du passage d'objets réduits via angulaire.toJson pour une communication RESTful.

Considérons une interface MyInterface avec un test de propriété unique :

<code class="typescript">interface MyInterface {
  test: string;
}</code>
Copier après la connexion

Et sa mise en œuvre avec un test de propriété supplémentaire property newTest :

<code class="typescript">class MyTest implements MyInterface {
  test: string;
  newTest: string;
}</code>
Copier après la connexion

Question :

Comment pouvons-nous garantir que l'objet réduit, lorsqu'il est attribué à partir d'un objet comme MyTest, ne contient que les propriétés déclarées dans MyInterface , à l'exclusion de newTest ?

Réponse :

Malheureusement, il n'est pas possible de supprimer directement les propriétés superflues d'un objet au moment de l'exécution en se basant uniquement sur une définition d'interface. Les interfaces dans TypeScript servent de construction au moment de la conception et leurs propriétés ne sont pas facilement disponibles lors de l'exécution.

Une solution potentielle suggérée consiste à définir « l'interface » en tant que classe, fournissant ainsi une implémentation d'exécution. Cela nous permet d'exploiter Lodash pour sélectionner uniquement les propriétés souhaitées de l'objet d'entrée :

<code class="typescript">class MyInterface {
  test: string = undefined;
}</code>
Copier après la connexion
<code class="typescript">import _ from 'lodash';

const before = { test: "hello", newTest: "world"};
let reduced = new MyInterface();
_.assign(reduced , _.pick(before, _.keys(reduced)));
console.log('reduced', reduced)//contains only 'test' property</code>
Copier après la connexion

En employant cette méthode, nous pouvons extraire efficacement les propriétés spécifiées, créant ainsi un objet qui adhère à l'interface. contrat et est prêt pour la sérialisation via angulaire.toJson.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal