Angular - 无法正确设置http响应类型

时间:2017-08-24 07:58:17

标签: angular typescript

我有一项服务公开了一些使用HttpClient请求的函数,其中一个是post

post<T>(url: string, data: any, params?: {[key: string]: any}): Observable<HttpEvent<T>> {
  return this.http.post<T>(this.host + url, data, this.getRequestOptions(params));
}

这里重要的是返回签名Observable<HttpEvent<T>>

然后,当我调用该函数时,我遇到两个问题:

this.api.post<string>('/tokens', credentials).subscribe((token: string) => {});

第一个问题是,由于lint错误,我无法传入<string>的类型:

Expected 0 type arguments but got 1

第二个问题是响应中的所有数据都变为类型HttpEvent<T>,而不是我发送的数据,在此示例中,它应该是string类型。

所以在上面的例子中我得到了这个错误:

  

类型的参数'(token:string)=&gt; void'不可分配给   参数类型'(值:HttpEvent&lt; {}&gt;)=&gt;无效”。种类   参数'token'和'value'不兼容。       输入'HttpEvent&lt; {}&gt;'不能指定为'string'类型。         类型'HttpProgressEvent'不能指定为'string'类型。

如何解决这个问题,以便我可以正确设置我的响应类型?

1 个答案:

答案 0 :(得分:1)

试试这个:

 post<T>(url: string, data: any, params?: {[key: string]: any}): Observable<T> {
            return this.http.post<T>(this.host + url, data, this.getRequestOptions(params)).map((res: T) => res);
        }