2016-11-01 3 views
2

にプロパティをフロントエンドに:今、私はtypescriptですクラスを持っているマッピングのバックエンドのプロパティ我々はバックエンドから次の結果があるとし

{ 
    idPerson:string, 
    name: string 
} 

を:

class Option { 
    id: string; 
    text: string; 
} 

ので、バックエンドは私に次のことを与えている。

"[{idperson: "1", name: "foo"}, {idperson:"2", name:"bar"}]" 

角度のあるhttpリクエストから回答を受け取った場合次のようにしています:

let options: any[] = []; 
options = JSON.parse(response); 

だから、それは私を与える:

[{idperson: "1", name: "foo"}, {idperson:"2", name:"bar"}] 

しかし、私は本当にフロントエンドキーにバックエンドからのキーをマッピングし、取得したい:

[{id: "1", text: "foo"}, {id:"2", text:"bar"}] 

は、どのように私はそれらをマッピングすることができますか?あなたは、私が代わりにインターフェイスを作成します。オプションのクラスの任意のメソッドを必要としない場合には

答えて

3

let options: Option[]; 
options = JSON.parse(response).map(item => ({ 
    id: item.idPerson, 
    text: item.name 
})); 

interface Option { 
    id: string; 
    text: string; 
} 

let options: Option[]; 
options = JSON.parse(response).map(item => ({ 
    id: item.idPerson, 
    text: item.name 
})); 

あなたはしかしOptionクラスのメソッドが必要な場合:

class Option { 
    constructor(public id: string, public text: string) {} 

    public doSomething() { 
    console.log(this.id) 
    } 
} 

let options: Option[]; 
options = JSON.parse(response).map(item => new Option(item.idPerson, item.name)); 
+2

を@Paarthは、いくつかのより多くの例を修正して、コメントを追加。 – toskv

関連する問題