我有以下代码
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 .
我找到了几个可能的错误来源并尝试了建议的解决方案,没有运气:
-
Typescript version(我降级到2.3,结果相似)
-
导入一个依赖于rxjs using npm link的包(我在本地安装了它,结果相同) .
我将不胜感激任何有关如何解决此问题的建议 .
1 回答
根据你的评论,我认为你应该在你的打字中明确,因此,导入Observable并声明类型:
重要的是
throw
(以及from
和其他运算符)可以输入,语法是`Observable.operator(operands ...)