来自C#背景,我认为这应该适用于打字稿。我有一个包含只读属性的类,该属性依赖于类中的其他两个属性。
export class Foo {
bar1: number;
bar2: number;
get bar3(): boolean {
return this.bar1 > this.bar2;
}
}
现在在Angular 4中我有一个返回Observable的服务,例如
getFoos(fooId: number): Observable<Foo[]> {
return this.http.get(this.url)
.map((res: Response) => res.json());
}
请注意,我的REST api响应不会返回bar3
,而只返回bar1
和bar2
。
然后在我的组件中,当尝试访问Foo[]
时,其条目上没有bar3
属性,只有bar1
和bar2
。
那么如何填充bar3
?
答案 0 :(得分:0)
根据您的评论res.json()
,您可以输入any
,因此根本没有检查。通常,typescript使用duck typing来检查对象属性是否与接口属性匹配。
要解决您的问题,您应该按照以下方式创建对象:
getFoos(fooId: number): Observable<Foo[]> {
return this.http.get(this.url)
.map((res: Response) => res.json().then(data)=>{
return data.map(el=>{
let obj = new Foo();
return {obj, ...el};
}
});
}
或者按照此处描述的一些建议: How do I cast a JSON object to a typescript class