ホームページ  >  記事  >  ウェブフロントエンド  >  TypeScript のインターフェイスに準拠するようにオブジェクトを減らすにはどうすればよいでしょうか?

TypeScript のインターフェイスに準拠するようにオブジェクトを減らすにはどうすればよいでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 03:58:02615ブラウズ

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

インターフェイス準拠へのオブジェクトの削減

TypeScript では、インターフェイスはオブジェクトのプロパティのコントラクトを定義し、クラスはそのインターフェイスを実装します。ただし、インターフェイスで定義されているものを超える追加のプロパティを持つオブジェクトが発生することはよくあります。これは、オブジェクトを JSON に変換する JSON.stringify() などのツールを使用するときに問題を引き起こす可能性があります。

これに対処するには、次のことを行う必要があります。実装するインターフェイスのプロパティのみを含むオブジェクト。

問題:

JSON.stringify( )、余分なプロパティが出力に含まれ、JSON が無効になる可能性があります。

解決策 1:

TypeScript インターフェイスにはランタイム表現がないため、プロパティ制限を強制するために使用することはできないため、回避策が必要です。インターフェイスをクラスとして定義すると、Lodash のようなライブラリを使用して、ターゲット オブジェクトからインターフェイスで定義されたプロパティのみを選択できます。

例:

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

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

このメソッドは、次のことを保証します。縮小されたオブジェクトには、インターフェイスで定義されたプロパティのみが含まれていることを確認します。

解決策 2:

別のアプローチとして、ターゲット オブジェクトのプロパティを手動でループして、各プロパティはインターフェイス定義に存在します。存在する場合、そのプロパティは縮小されたオブジェクトに追加されます。この方法では、意図しないプロパティが追加されないように細心の注意を払う必要があります。

JavaScript の TypeScript インターフェイスとのプロパティの準拠を強制する直接的な方法はありませんが、これらの回避策は、インターフェイス定義に準拠するオブジェクトを減らす実用的な解決策を提供します。

以上がTypeScript のインターフェイスに準拠するようにオブジェクトを減らすにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。