类型 'void' 不可分配给类型 'ObservableInput<{}>'

新手上路,请多包涵

在我迁移到 TS 2.2.2 后,这个错误开始出现,所以我假设这就是问题所在……代码没有停止工作,但现在我收到了这个错误,我尝试了一些事情,比如返回一个空的 observable ,捕获重新抛出的异常并返回一个对象,似乎没有任何效果。为什么现在会发生这种情况?难道它不应该理解我正在重新抛出异常并且不期望返回吗?我误读了错误吗?

这是完整的错误描述:

在此处输入图像描述

这是完整的代码:

 return request
    .map((res: Response) => res.json())
    .catch((error: any) => {
        // todo: log?

        if (error.status == 500) {
            this.alertService.showError(error.statusText);
        } else if (error.status == 588) {
            this.alertService.showAlert(error.statusText);
        }

        Observable.throw(error.statusText);
    });

我尝试返回 Observable,但我的包装方法期望返回类型 T ,这是我的反序列化请求的返回( map(...) )。如果我确实返回 throw 这是我得到的错误:

[ts] 类型 ‘Observable’ 不可分配给类型 ’T’

我在用着:

  • 角4
  • 打字稿 2.2.2

原文由 eestein 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 516
1 个回答

你必须返回 Observable

  return request
    .map((res: Response) => res.json())
    .catch((error: any) => {
        // todo: log?

        if (error.status == 500) {
            this.alertService.showError(error.statusText);
        } else if (error.status == 588) {
            this.alertService.showAlert(error.statusText);
        }

        return Observable.throw(error.statusText);
    });

原文由 El houcine bougarfaoui 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进