如何在管道过程中转换 Observable 结果
How to transform Observable result in piping process
因为没有 API 响应适合所需数据接口的大小,我们需要转换 HttpResponse 以使其与我们的类型定义方法相匹配
收到一个错误,提示类型 'Tag[]' 上不存在结果
Interface Tag{
title:string;
}
searchTag(term:string):Observable<Tag[]>{
const url = 'api/tags'
return this.http.get<Tag[]>(url).pipe(map(tags=>tags.Result)) <<-error here
}
注意到我正在将 Observable 响应映射到 Result 对象,因为 GET 'api/tags' 响应如下所示,这就是为什么我应该将管道中上面的标签映射到 Result.
{
"Operation": "GET/allTags",
"Count": 2,
"Result": [{"title": "tsadg"}]
}
正如@jonrsharpe 所建议的!,您告诉 TS http 客户端实例将返回带有标签形状的响应,其中结果未定义!尽管您必须将您的 http 响应提示类型重塑为
<{Result:Tag[]}>
现在 TS 不会反对访问结果,因为它是其形状的一部分
因为没有 API 响应适合所需数据接口的大小,我们需要转换 HttpResponse 以使其与我们的类型定义方法相匹配
收到一个错误,提示类型 'Tag[]' 上不存在结果
Interface Tag{
title:string;
}
searchTag(term:string):Observable<Tag[]>{
const url = 'api/tags'
return this.http.get<Tag[]>(url).pipe(map(tags=>tags.Result)) <<-error here
}
注意到我正在将 Observable 响应映射到 Result 对象,因为 GET 'api/tags' 响应如下所示,这就是为什么我应该将管道中上面的标签映射到 Result.
{
"Operation": "GET/allTags",
"Count": 2,
"Result": [{"title": "tsadg"}]
}
正如@jonrsharpe 所建议的!,您告诉 TS http 客户端实例将返回带有标签形状的响应,其中结果未定义!尽管您必须将您的 http 响应提示类型重塑为
<{Result:Tag[]}>
现在 TS 不会反对访问结果,因为它是其形状的一部分