首页 文章

类型'Observable<any>'不能分配给'Observable<T>'类型

提问于
浏览
0

我有以下代码

import {HttpClient} from '@ngular/common/http';

private httpClient: HttpClient;

do_request(method: string,                                                           
        url: string,                                                              
        headers?: HttpHeaders,                                                
        content?: string,                                                         
        contentType?: string): Observable<MyResponse>{                      

   let options = {                                                                
       observe: 'response' as 'response',                                         
       responseType: 'text' as 'text',                                             
       headers: headers,
       body: content:                                                                           
   }

   return this.httpClient.request(method, url, options)                           
            .map(res=> new MyResponse(res.status, res.body))                
            .catch(err=>Observable.throw(new MyResponse(err.status)));                     
}

此代码给出了以下错误

错误TS2322:类型'Observable'不能分配给'Observable'类型 . 属性'source'受保护,但类型'Observable'不是派生自'Observable'的类

我正在使用Rxjs 5.4.3,Angular 4.4.3和TypeScript 2.5.3 .

我找到了几个可能的错误来源并尝试了建议的解决方案,没有运气:

我将不胜感激任何有关如何解决此问题的建议 .

1 回答

  • 0

    根据你的评论,我认为你应该在你的打字中明确,因此,导入Observable并声明类型:

    return this.httpClient.request(method, url, options)                           
            .map((res): MyResponse => new MyResponse(res.status, res.body))                
            .catch((err):Observable<MyResponse> => Observable.throw<MyResponse>(new MyResponse(err.status)));
    

    重要的是 throw (以及 from 和其他运算符)可以输入,语法是`Observable.operator(operands ...)

相关问题