2016-07-25 4 views
0

Я использую Angular 2 и передаю сообщение об ошибке HTTP-запроса в метод logAndPassOn. Я получаю сообщение об ошибке «Свойство« статус »не существует в типе« Ошибка ». Тип ошибки - это объект, но похоже, что typeof Error будет распознаваться как файл typeof.Свойство 'status' не существует для типа 'Error'

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

Я обошел это, установив тип ошибки как «любой», но кажется, что должен быть лучший способ. Есть ли библиотека для импорта typeof Error? Есть ли способ справиться с этим, помимо написания собственного класса ошибок и его импорта?

+1

Не знаете, где этот метод используется, но если вы работаете с Http наблюдаемым, и это ваш обратный вызов ошибки, я думаю, что фактический тип, переданный обратному сигналу ошибки, является 'Response' из' @ angular/http', тот же ответ вы получаете в обратном вызове успеха, а не в 'Error'. –

+0

Я использую Http наблюдаемый, и это мой обратный вызов, но если я изменю ошибку на ответ или ответ, я получаю «Не могу найти имя« Ответ ».» –

+0

Вам необходимо импортировать его из '@ angular/http' –

ответ

2

Объект, переданный на обратный вызов ошибки Http, фактически относится к типу Response от модуля @angular/http. Это тот же Response, который вы получили бы от первоначального вызова Http. Если есть ответ об ошибке, то Response будет отправлен как ошибка через абонента.

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

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

Так в основном, вы пытаетесь использовать Error не является правильным. Он работает, когда вы используете any, так как во время работы фактический Response объект прошел, делает имеет status.

Смежные вопросы