0
I次のJSONがあります角度2キャストJSON
{
"AssetId": "Asset1",
"Currency": "USD",
"Rating": "BBB",
"Dur": 0.557519237
}
とクラス:
export class Constituent {
AssetId?: string;
Currency?: string;
Rating?: string;
Dur?: number;
public get maturityBucket(): string {
const dur = this.Dur || 0;
if (dur < 0.5) {
return '0-6m';
}
if (dur < 1) {
return '6m-1y';
}
if (dur < 2) {
return '1y-2y';
}
if (dur < 5) {
return '2y-5y';
} else {
return '5y+';
}
}
}しかし
、私はJSONを読みますのように:
loadConstituentData(): void {
const url = './src/data/assets.json';
this.http.get(url)
.subscribe(response => {
this.data.next(<Constituent[]>response.json());
}, this.handleError);
}
Th e maturityBucket
読み取り専用プロパティが表示されなくなります。
どうすればこの問題を解決できますか?ここで
は、コードのPlunkerです: https://plnkr.co/edit/3oRl9zIlG23jBUvUqaw6?p=previewあなたはちょうどこのオブジェクトは、さらに型チェックのための特定のタイプを持っていることを活字体コンパイラを伝えるあなたは、このオブジェクトを変更しない、特定のクラスまたはインタフェースにオブジェクトをキャストしようと
素晴らしいです!どうもありがとう、このウェブ全体のものは少し使い慣れています(私は主にC#開発者です)。 – markblandford
非常に良い応答。 this.http.get(url) .map(response.json()) .map(item => Constituent.createFromJsonObject(item))のような操作を分解することで、 ) .subscribe(構成要素=> { this.data.next(構成要素); }、this.handleError); これは、パックに参加する新しい開発者のベストプラクティスと高い可読性を促進するのに役立ちます。 –