2017-09-28 24 views
1

我試圖創建一個處理技術錯誤,但我面臨的問題的服務。 類型返回的項目變更的,如果我做的一個問題:Typescript - 可觀察的響應類型更改,如果我打電話catch

Observable.of(1, 2, 3).subscribe(
    item => {}, // item type is number 
    error => {} 
); 

Observable.of(1, 2, 3).catch(error => { 
    // do something 
    throw error; 
}).subscribe(
    item => {}, // item type is number | {} 
    error => {} 
); 

有沒有一種方法,以保持項目醒目的觀察到的,當鍵入僅是多少?

語境: 我想分享的Web服務的手柄throught多個服務:

  • WepAPI.Service將處理技術錯誤(404,500,...)
  • ComponentRelated.Service將處理功能處理和錯誤
  • 組件將處理數據轉換特定於UI

也許我不是這樣做的很好的方式,任何意見/樣本將被折扣。

感謝

回答

1

檢查this

記得從捕捉功能

返回一個可觀察的,不要在錯誤函數拋出一個錯誤,.catch的目的是在不中斷流的情況下提供回退值。這個回退必須是另一個可觀察的(儘管你仍然會在訂閱的第一個參數上獲得觀察值的內容)。

Observable.of(1, 2, 3).catch(error => { 
    const fallbackValue: number = 42; 
    Rx.Observable.of(fallbackValue); 
}).subscribe(
    item => {}, // item type is number 
    error => {} 
);