如何在管道过程中转换 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 不会反对访问结果,因为它是其形状的一部分