我有以下代码
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:键入&#39; Observable&#39;不能分配给&#39; Observable&#39;。财产来源&#39;受到保护,但键入&#39; Observable&#39;不是来自&#39; Observable&#39;
的类
我使用的是Rxjs 5.4.3,Angular 4.4.3和TypeScript 2.5.3。
我发现了几个可能的错误来源并尝试了建议的解决方案,但没有运气:
我将很感激有关如何解决此问题的任何建议。
答案 0 :(得分: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 ...)