Я пытаюсь вернуть пользовательскую ошибку из службы данных в случае возникновения ошибки.
public getRoles(): Observable<Array<Role> | CustomError> {
return this.http.get(this.urlService.getRoles)
.pipe(
map((res: any) => {
let roles = new Array<Role>();
res.Result.forEach(item => {
roles.push(new Role().fromItem(item));
});
return roles;
}
),
catchError(err => {
let customError = new CustomError();
customError.errorNumber = err.status;
customError.message = err.message;
return throwError(customError);
})
);
}
Приведенный выше код выполняется точно так, как я ожидаю, но текстовый редактор отображает следующую ошибку:
(TS) Тип 'Наблюдаемый <{} |Role []> 'нельзя назначить типу' ObservableRole [] |CustomError> '.
Type' {} |Role [] 'нельзя назначить типу' Role [] |CustomError '.
Тип' {} 'нельзя назначить типу' Role [] |CustomError '.
Тип' {} 'нельзя назначить типу' CustomError '.
Свойство' errorNumber 'отсутствует в типе' {} '
Может кто-нибудь сказатьмне, что мне нужно сделать, чтобы решить проблему?
Оказывается, что это не единственное место в коде, где у меня возникла проблема с catchError.У меня есть простой перехватчик, который будет регистрировать ошибки http на консоли.(Я экспериментировал с тем, как использовать перехватчики).
public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log(`ErrorInterceptor - ${req.url}`);
return next.handle(req)
.pipe(catchError(err => {
console.log(err);
return throwError(err);
}));
}
С этим блоком кода я получаю очень похожий набор сообщений.Я правильно использую catchError и throwError?