我有一个返回数组的webapi:
[
{"id":1,"name": "name" }
]
当我做的时候
http.get<MyType[]>('url')
.subscribe(data => {
// data = [Object]
})
数据未在我的对象中转换。它就像[Object]
一样。我可以访问data[0].id
,data[0].name
这样的数据,但官方httpclient文档说我可以检查数据,这很好。但是,在我的案例MyType[]
中,您如何将整个数组转换为您的类型?
我正在使用angular 4.3+
HttpClient
答案 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} }}