Я пытаюсь вернуть настраиваемую ошибку из службы данных в случае ошибки и.
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) Тип Наблюдаемый ‹{} | Роль []> 'не может быть назначена типу' ObservableRole [] | CustomError> '.
Введите '{} | Роль [] »не может быть назначена типу« Роль [] | 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?