2

我目前正在學習角2,以Deborah Kurata的Pluralsight類(Angular 2:Getting Started)爲例。目前爲止這很棒,但對於我的生活來說,我似乎無法發現我的.catch的返回類型應該是什麼。在她的課程中,以及我迄今爲止發現的每個示例中,返回類型都留空。什麼是Http.get()。catch的返回類型?

這是我有:

getProducts(): Observable<IProduct[]> { 
    return this._http.get("someurl") 
     .map {.....} 
     .catch(this.handleError); 
} 

handleError (response: Response) **/*what goes here?*/** { 
    // the code in the course says Observable.throw, but chrome is 
    // complaining that there is no such function. I have tracked 
    // down "static throw: typeof ErrorObservable.create;" in 
    // Observable.ts but I'm not sure what's going on here. 
} 

回答

0

最常見的返回類型爲Observable

準確地說,選擇功能將catch()操作定義爲:

(err: any, caught: Observable): ObservableInput 

返回可觀察使用,支持多種返回類型的subscribeToResult訂閱(這就是爲什麼有ObservableInput並不僅僅是Observable)。無論如何,它更容易看看是不是在線文檔在源代碼中的例子還沒有,你應該能夠理解它是如何工作的:https://github.com/ReactiveX/rxjs/blob/master/src/operator/catch.ts#L8

或者看到什麼subscribeToResult支持:https://github.com/ReactiveX/rxjs/blob/master/src/util/subscribeToResult.ts#L17

+0

謝謝@馬丁。不幸的是,源代碼不能說明太多(對我而言)。但是我看到了「輸出函數_catch (this:Observable ,selector:(err:any,caught:Observable )=> ObservableInput ):Observable {...}所以,」_catch「(不是」 catch「)是一個函數,它需要」this「(在TS中是如何工作的)和一個選擇器函數,選擇器函數返回ObservableInput ,而_catch本身返回Observable 。趕上「返回?(我也試圖返回」Observable「,但當然它抱怨丟失的泛型類型。) –

+0

@ emery.noel你能顯示給你類型錯誤的確切代碼嗎? – martin