Я имею в виду, catchError
возвращает Observable
тип объединения: Observable<{} | Page}
вместо Observable<Page>
.
Я получаю это сообщение компилятора:
Type 'Observable<{} | Page>' is not assignable to type 'Observable<Page>'.
Type '{} | Page' is not assignable to type 'Page'.
Type '{}' is missing the following properties from type 'Page': total, audits
код:
public searchFromStorageByCriteria(filter: Query): Observable<Page> {
const buildPage = () => map((response: Response) => this.buildPage(response));
const onErrorEmptyPage = () => catchError(() => Observable.of(Page.EMPTY));
let url:string = this.buildURL(user, app, filter);
return this.authHttp.get(url)
.pipe(
buildPage(),
onErrorEmptyPage()
);
}
Проблема находится на catchError
, поскольку:
export declare function catchError<T, R>(selector: (err: any, caught: Observable<T>) => ObservableInput<R>): OperatorFunction<T, T | R>;
Как вы можете видеть, он возвращает : OperatorFunction<T, T | R>
, а также caught: Observable<T>
.
Page.EMPTY
- это:
export class Page {
readonly total: number;
readonly audits: Array<Audit>;
public static EMPTY:Page = {total: 0, audits: []};
}
Есть идеи?