【发布时间】:2017-06-21 03:00:38
【问题描述】:
我正在尝试向服务添加一些错误处理,遵循 Angular guide。
相关sn-p:
private handleError (error: Response | any) {
// In a real world app, you might use a remote logging infrastructure
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Observable.throw(errMsg);
}
但是,我遇到了 TypeScript 错误:
error TS2339: Property 'error' does not exist on type '"" | Promise<any>'.
Property 'error' does not exist on type '""'.
我可以理解为什么会发生这种情况——error.json() 返回一个Promise<any>,然后带有body.error 的后续行不起作用,因为没有error 属性。但是,它似乎应该期望从.json() 返回一个 JSON 对象。为什么会这样,我错过了 Angular 指南没有的什么?
【问题讨论】:
-
您对 Response 的导入情况如何?
-
我没有任何明确的导入,我应该这样做吗?看起来当我在 WebStorm 上单击 cmd 时它会转到
JavaScriptLanguage/jsLanguageServicesImpl/external/lib.d.ts -
刚刚意识到我需要
import { Response } from @angular/http,没有它我会从 JavaScript 获取响应接口,而不是 Angular 定义的不返回 Promise 的接口。
标签: angular typescript