Прежде всего, слишком много труб. Там не нужно так много. Также вы можете использовать of()
вместо Observable.of()
, что короче и ИМХО легче читать.
this.searchQuery$.pipe(
merge(this.lazyQuery$),
tap(() => this.loadingPage()),
map(filter => this.buildURL("jaume", Config.security['appName'], filter)),
switchMap(url => this.service.getItemsFromStorage(url)),
catchError(() => of(pojo.Page.EMPTY)),
tap(page => this.loadedPage(page)) <<***>>
);
Это будет отлично работать.
Ваша ошибка не в том, что она возвращает, а в том, что TypeScript считает, она возвращает. Таким образом, вы должны просто сказать, что это возвращает. Например
...
catchError(() => of(<Page>pojo.Page.EMPTY))
...
Если это действительно раздел catchError
.
Обновление № 1 - Вложение
Если вам нужно применить какую-то конкретную трубу к единственной точке в цепочке, вы должны добавить эту трубу, где возвращается наблюдаемая. Например
...
switchMap(() => of(null).pipe(
catchError(...)
))
Когда вы делаете
.pipe(...),
.pipe(...),
.pipe(...),
Это эквивалент
.pipe(
...
...
...
)