TypeScriptを使用してアプリケーションを作成しています。オブジェクトを取得するAPI呼び出しを行っています。例えば、私はこのような活字体User
オブジェクトがあります。JSONのTypescriptオブジェクト
export class User {
id : number;
name : string;
email : string;
}
そして、私のAPIが返す
{
"id" : 3,
"name" : "Jonn",
"email" : "[email protected]"
}
を私はJSONがUser
に変換します。私はこれを行うことができます別の記事を読んだ:
let user : User = <User> myJson;
これは動作します。私はuser.name
のようなユーザーのプロパティにアクセスできますが、私の問題は、User
クラスがいくつかのメソッドを実装している場合、そのプロパティは利用できないということです。これが起こる
getUppercaseName() : string {
return this.name.toUppercase();
}
:User
クラスの中、私はこの持っている場合たとえば、 user.name
戻りJohn
しかしuser.getUppercaseName()
戻りundefined
を何が起こっているの?
export interface User {
id : number;
name : string;
email : string;
}
コンパイラはあなたがクラスをこのようis becauseを使用して文句ないことを理由:これはまったく同じに動作しますようあなたは、インターフェイスとしてクラスを処理することをやっているこの
私は、jsonデータを特定のクラスインスタンスに変換する方法が問題だと思います。 そのようなものは(ユーザのコンストラクタがあると仮定して)動作するはずですが、ngIfで結果を使用するとエラーが表示されます 返すthis._http.get(this.urll) .map((res:Response)=> res .json()) .map(obj:any => {新しいユーザー(obj.number、obj.name、obj.email);}) – rook
@rook 'map'を2回使用する必要はありません。 => {let json = res.json();新しいユーザを返します(json.id、json.name、json.email); }) '。どのようなエラーが出ますか? –
はい、短くなっていますが、エラーは同じです: 'オブジェクト'タイプのサポートオブジェクト '[オブジェクトオブジェクト]'が見つかりません。 NgForは、配列などのIterablesへのバインドのみをサポートしています。 – rook