Angular2和Typescript我需要为每个api调用声明模型

时间:2017-02-22 07:02:46

标签: angular typescript

来自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)

1 个答案:

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