我有以下代碼類型「可觀察<any>」是不能分配給輸入「可觀察<T>」
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)));
}
此代碼是給我下面的錯誤
error TS2322: Type 'Observable' is not assignable to type 'Observable'. Property 'source' is protected but type 'Observable' is not a class derived from 'Observable'
我使用Rxjs 5.4 .3,Angular 4.4.3和TypeScript 2.5.3。
我已經發現了幾個可能的誤差來源,並沒有運氣嘗試建議的解決方案:
- Typescript version(我降級到2.3了類似的結果)
- 導入一個包,也對rxjs依賴using npm link(我在本地安裝,結果相同)。
我會很感激任何有關如何解決此問題的建議。
如果您刪除了'catch'塊,它會發生嗎? – Meir
@Meir錯誤更改:類型'Observable'不可分配爲鍵入'Observable '。這個名稱存在兩種不同的類型,但它們不相關。 我刪除了我的代碼中的重複依賴項(正如我在問題中所解釋的)。但可能這與我使用新的角度/通用/ http模塊的事實有關 –
pablochacin