“错误”类型中不存在属性“status”

时间:2016-07-25 17:15:10

标签: typescript angular angular2-services

我正在使用Angular 2并将HTTP请求中的错误传递给logAndPassOn方法。我收到错误“属性'状态'在类型'错误'上不存在。”类型错误是对象,但似乎类型错误将被识别为类型文件是。

  private logAndPassOn (error: Error) {
    if (error.status == 403) {
      Do things
    }
    return Observable.throw(error);
  }

我通过将错误的类型设置为“any”来解决这个问题,但似乎应该有更好的方法。是否有一个库来导入typeof Error?除了编写我自己的Error类并导入它之外,有没有办法处理它?<​​/ p>

1 个答案:

答案 0 :(得分:2)

传递给Http错误回调的对象实际上来自Response模块的类型@angular/http。这与您从初始Http调用获得的Response相同。如果存在错误响应,则Response将作为错误发送给订阅者。

import { Response } from '@angular/json';

http.get(..)
    .subscribe(
         (res: Response) => { doSomething(res.json()) }
         (res: Response) => { ... }); 

基本上,您尝试使用Error是不正确的。它在您使用any时有效,因为在运行时传递的实际Response对象, 具有status属性。