来自Angular 1背景,我曾经把我的所有模型声明为POCO,我的web api调用返回了数据。
datacontext.query('api/OwnerData/GetOwners').then(function (d) {
vm.domain = d;
}
现在使用Angular2和Typescript,我有两个选择。要么我可以使用map并获取一个JSON对象并将其分配给组件中的属性,然后在视图中使用它。
this.http.get(`/api/OwnerData/GetOwners`, { headers: this.getHeaders() })
.map(r => r.json())
.catch(handleError);
否则,我可以使用不同的映射函数将其映射到强类型对象。但是,如果我继续这条路径,我将不得不在打字稿的后端定义整个域模型。还有一套方法来映射它们。我觉得这是一项太多的工作和重复。另一方面,如果我使用JSON,那么我将失去类型安全性。
您对此有何看法?谢谢你的时间。 (我使用的是Angular 2.4和Typescript 2.1.5)
答案 0 :(得分:0)
您可以直接转换为与JSON完全匹配的接口。这样就可以获得自动完成和编译错误,但是您不需要实现任何方法。在运行时忽略接口。因此,您在运行时不会获得任何类型安全性。
interface MyData {
a:string;
b:number;
}
this.http.get(`/api/OwnerData/GetOwners`, { headers: this.getHeaders() })
.map(r => r.json() as MyData)
.catch(handleError);