2017-09-28 82 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 => {} 
);