打字稿 - 如果我调用catch,可观察的响应类型改变

时间:2017-09-28 08:49:56

标签: angular typescript observable

我正在尝试创建一个处理技术错误的服务,但我遇到了一个问题。 如果我执行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服务的句柄:

  • WepAPI.Service将处理技术错误(404,500,...)
  • ComponentRelated.Service将处理功能处理和错误
  • 组件将处理特定于UI的数据转换

也许我不是这样做的好方法,任何建议/样本都会受到重视。

感谢

1 个答案:

答案 0 :(得分:1)

检查this

  

请记住从catch函数返回一个observable

不要在错误函数中抛出错误,.catch的目的是在不破坏流的情况下提供回退值。这个回退必须是另一个可观察的(虽然你仍然会在订阅的第一个参数上获得observable的内容)。

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