Angular 错误和 RXJS 承诺

Error in Angular and RXJS promise

我想将 Angular 应用程序从 2 升级到 4,但出现以下错误:

 Type 'Promise<void | Store>' is not assignable to type 'Promise<Store>'.

类型 'void | Store' 不能分配给类型 'Store'。 类型 'void' 不可分配给类型 'Store'.

有问题的行是这样的:

return this.http.get(url, { headers: this.headers })
            .toPromise()
            .then(response => response.json().data as Store)
            .catch((err) => { console.log('An error occurred under StoreService.StoreGetById', err); });

这在我升级之前有效,而且我对 RxJS 还很陌生。

承诺拒绝会自动记录 - 正如 cartant 的评论所解释的那样 - 通过 .catch 导致 | Void.

的错误

当一个 JavaScript 函数没有 return 任何东西时它 return 默认情况下 undefined - 所以你的承诺要么是商店(来自 then) 或无效(来自 catch).

IMO 的正确解决方案是完全删除 .catch 子句,并依靠承诺拒绝自动记录到您的控制台。