Я мог бы что-то упустить, но у вас есть метод, который объявлен для возврата потока AppUser
, который реализует интерфейс Resolve<AppUser>
. И с catchError
+ of(null)
этот метод эффективно возвращает поток либо null
, либо AppUser
. Как справедливо жалуется компилятор TS.
Чтобы исправить это, вы можете либо вернуть EMPTY
наблюдаемый . Он не выдает значений и сразу завершает работу. NEVER
- это еще одна постоянная наблюдаемая, которая никогда не испустит и никогда не завершит. Выберите тот, который вам нужен. Э.Г.
catchError(()=>{
// ...
return EMPTY;
})
ПРИМЕЧАНИЕ. При таком подходе вам может потребоваться приведение типов, например EMPTY as Observable<AppUser>
. Хотя это будет честный актерский состав - поскольку пустая наблюдаемая может быть любого типа наблюдаемой.
или , если вам нужно выдать значение null
в поток - объявите метод как возвращающий Observable<AppUser | null>
, который является фактическим типом, который он возвращает в данный момент. И вам придется также обновить Resolve<AppUser>
до Resolve<AppUser | null>
.
==
, чтобы подчеркнуть это:
В большинстве случаев вы не хотите лгать своей системе печати и принудительно приводите тип Observable<null | AppUser>
к Observable<AppUser>
.
==
Надеюсь, это поможет