1. ホーム
  2. json

[解決済み] JSONオブジェクトをTypeScriptのクラスにキャストする方法を教えてください。

2022-03-18 14:28:42

質問

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

typescript varに入力したくない(つまり、このJSONオブジェクトを受け取るコンストラクタがある)。それは大きく、サブオブジェクトごとに& プロパティごとにすべてをコピーすると、多くの時間がかかります。

更新してください。 しかし、あなたは タイプスクリプトのインターフェイスにキャストしてください。

解決方法は?

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

データだけを扱うのであれば、(純粋にコンパイル時の構造なので)インターフェイスにキャストすればよいのだが、その場合、データのインスタンスを使用してそのデータに対して操作を実行するTypeScriptクラスを使用する必要がある。

データをコピーする例もあります。

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

要するに、あなたはただ:

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