Условные наблюдаемые, которые вызывают другие наблюдаемые?

#rxjs

Вопрос:

Я извлечении объекта (реестр) из магазина (Акита), и исходя из того, что объекта не существует, либо я запрашиваю с сервера (моего if ) и, пройдя его вдоль или (мой else ) берет одну я получаю, выборка другой объект (манифест), делать синхронные операции на обоих из них, а затем передает результат вместе.

Я попытался просто вернуть объекты, а также вернуться of(the object) , и ошибка та же: Type 'Observable<void>' is not assignable to type 'Observable<Roster>'. Type 'void' is not assignable to type 'Roster'

 selectRoster(slug: string): Observable < Roster > {
    
    const roster$ = this.selectEntity(slug).pipe(
        map((roster: Roster) => {
            if (!roster) {
                this.rosterService.loadRoster(slug).pipe(
                    map((load: Roster) => {
                        return load
                    })
                );
            } else {
                this.manifestQuery.selectEntity(roster.manifest.manifest_slug).pipe(
                    map((manifest: Manifest) => {
                        return this.rosterProcess.composeRegistry(roster, manifest)
                    })
                );
            }
        })
    )   
    return roster$
}
 

Я думал, что возвращение изнутри if/else сработает, основываясь на моих исследованиях, но это вызывает жалобы.

Комментарии:

1. Что rosterProcess.composeRegistry() возвращается?

2. Похоже, вы ничего не возвращаете оттуда map((roster: Roster) => {.... . Так что, возможно, именно поэтому Typescript говорит вам, что roster$ это observable void ошибка .