将WabApi响应数组转换为类型化数组

时间:2017-08-15 01:19:09

标签: angular typescript

我有一个返回数组的webapi:

[
 {"id":1,"name": "name" }
]

当我做的时候

http.get<MyType[]>('url')
.subscribe(data => {
  // data = [Object]
})

数据未在我的对象中转换。它就像[Object]一样。我可以访问data[0].iddata[0].name这样的数据,但官方httpclient文档说我可以检查数据,这很好。但是,在我的案例MyType[]中,您如何将整个数组转换为您的类型?

我正在使用angular 4.3+ HttpClient

1 个答案:

答案 0 :(得分:1)

我假设这是你的问题:

  

我是否必须访问data [0] .id,data [0] .name?

等数据

是的,因为data是一个数组。

此外,你说:......

  

数据未在我的对象中转换。它就像   [对象] ...如何将响应转换为MyType []?

我不确定您是否理解类型系统是什么。 TypeScript是一个Type System。它在运行时没有任何作用。当你编译TypeScript(为了运行它而必须这样做)时,就不再有TypeScript了。如果您在运行时看到TypeScript,那只是一种表示,这样您就可以理解您的代码。这称为源图。在运行时,它是所有JavaScript。

话虽如此,在运行时没有对象从一种类型转换为另一种类型。存在的唯一转换类似于(foo as any).bar()),但同样,这只会在您编译之前存在,因此类型系统可以知道foo具有bar()

您的回复应该是MyType[]。如果您在运行时看到[Object],那是因为Chrome开发者工具在toString()上调用了MyType,而[Object]尚未被覆盖,因此它会显示{{1} }}