Angular Typescript-调用catch时可观察到的响应类型更改

Angular Typescript-调用catch时可观察到的响应类型更改,angular,typescript,observable,Angular,Typescript,Observable,我试图创建一个处理技术错误的服务,但我面临一个问题。 如果执行捕获,则返回项目的类型将发生更改: 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 => {},

我试图创建一个处理技术错误的服务,但我面临一个问题。 如果执行捕获,则返回项目的类型将发生更改:

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.服务将处理技术错误(404500,…)
  • 组件相关。服务将处理功能进程和错误
  • 组件将处理特定于UI的数据转换
也许我做得不好,任何建议/样品都将受到欢迎

谢谢检查

记住从catch函数返回一个可观察的

不要在error函数中抛出错误,.catch的目的是在不中断流的情况下提供回退值。此回退必须是另一个可观察的(而您仍将在subscribe的第一个参数上获得可观察的内容)

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