Maison  >  Article  >  interface Web  >  Comment réduire un objet pour se conformer à une interface en TypeScript ?

Comment réduire un objet pour se conformer à une interface en TypeScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 03:58:02620parcourir

How can we reduce an object to conform to an interface in TypeScript?

Réduction d'objet à la conformité d'interface

Dans TypeScript, une interface définit un contrat pour les propriétés d'un objet, tandis qu'une classe implémente cette interface. Cependant, il est courant de rencontrer des objets avec des propriétés supplémentaires au-delà de celles définies dans une interface, ce qui peut poser des problèmes lors de l'utilisation d'outils comme JSON.stringify() qui convertissent les objets en JSON.

Pour résoudre ce problème, il est nécessaire de réduire un objet tel qu'il ne contient que les propriétés de l'interface qu'il implémente.

Problème :

Lors de la tentative de conversion d'un objet avec des propriétés supplémentaires en JSON à l'aide de JSON.stringify( ), les propriétés supplémentaires sont incluses dans la sortie, invalidant potentiellement le JSON.

Solution 1 :

En raison du fait que les interfaces TypeScript n'ont pas de représentation d'exécution et donc ne peut pas être utilisé pour appliquer des restrictions de propriété, une solution de contournement est nécessaire. En définissant l'interface en tant que classe, nous pouvons utiliser une bibliothèque comme Lodash pour sélectionner uniquement les propriétés définies dans l'interface à partir de l'objet cible.

Par exemple :

<code class="typescript">import _ from 'lodash';

const reducedObj = new MyInterface();
_.assign(reducedObj, _.pick(originalObj, _.keys(reducedObj)));</code>

Cette méthode garantit que l'objet réduit ne contient que les propriétés définies dans l'interface.

Solution 2 :

Comme une autre approche, on peut parcourir manuellement les propriétés de l'objet cible, en vérifiant si chaque propriété existe dans la définition de l'interface. Si c'est le cas, la propriété est ajoutée à l'objet réduit. Cette méthode nécessite une attention particulière pour éviter d'ajouter des propriétés involontaires.

Bien qu'il n'existe aucun moyen direct de garantir la conformité des propriétés avec les interfaces TypeScript en JavaScript, ces solutions de contournement fournissent des solutions pratiques pour réduire les objets afin qu'ils se conforment aux définitions d'interface.

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!

Déclaration:
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