打字稿依赖属性

时间:2017-10-07 16:59:47

标签: typescript

来自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,而只返回bar1bar2。 然后在我的组件中,当尝试访问Foo[]时,其条目上没有bar3属性,只有bar1bar2。 那么如何填充bar3

1 个答案:

答案 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