JSON オブジェクトを TypeScript クラスにキャストするにはどうすればいいですか? 質問する

JSON オブジェクトを TypeScript クラスにキャストするにはどうすればいいですか? 質問する

リモート REST サーバーから JSON オブジェクトを読み取りました。この JSON オブジェクトには、TypeScript クラスのすべてのプロパティが含まれています (設計による)。受信した JSON オブジェクトを型変数にキャストするにはどうすればよいでしょうか。

Typescript var にデータを投入したくありません (つまり、この JSON オブジェクトを受け取るコンストラクターを用意したくありません)。これはサイズが大きく、サブオブジェクトごと、プロパティごとにすべてをコピーすると、かなりの時間がかかります。

更新:ただし、それを TypeScript インターフェースにキャストしてください。

ベストアンサー1

Ajax リクエストからの単純な古い JavaScript の結果を、プロトタイプの JavaScript/TypeScript クラス インスタンスに単純にキャストすることはできません。これを行うにはいくつかの手法があり、通常はデータのコピーを伴います。クラスのインスタンスを作成しない限り、メソッドやプロパティは存在しません。単純な JavaScript オブジェクトのままです。

データのみを扱う場合は、インターフェイスへのキャストを行うだけで済みますが (純粋にコンパイル時の構造であるため)、そのためには、データ インスタンスを使用してそのデータで操作を実行する TypeScript クラスを使用する必要があります。

データのコピーの例:

  1. AJAX JSON オブジェクトを既存のオブジェクトにコピーする
  2. JavaScript で JSON 文字列を特定のオブジェクト プロトタイプに解析する

本質的には、次のようになります。

var d = new MyRichObject();
d.copyInto(jsonResult);

おすすめ記事