ошибка TS2322: тип 'Наблюдаемый <{} | T> 'нельзя назначить типу' Observable <T>' - PullRequest
0 голосов
/ 18 ноября 2018

Я нашел этот пример для обработки ошибок асинхронного канала для Angular, который выглядел многообещающим: https://sebastian -holstein.de / post / error-processing-angular-async-pipe /

Попытка запустить его в angular 7, хотя вызывает ошибки компиляции

readonly data$: Observable<T>;

  constructor(data: Observable<T>) {
    this.data$ = data.pipe(
      shareReplay(1),
      catchError(error => {
        console.log(error);
        this._errorLoading$.next(true);
        return of();
      })
    );
  }

Ошибка:

ERROR in src/app/loading-wrapper.ts(12,5): error TS2322: Type 'Observable<{} | T>' is not assignable to type 'Observable<T>'.
  Type '{} | T' is not assignable to type 'T'.
    Type '{}' is not assignable to type 'T'.

Полный класс

enter image description here

Любые предложения о том, как исправить?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Это потому, что вы делаете return of();, а значение, передаваемое of, не относится к типу T.

Вместо этого вы можете сделать return of(null); или убедиться, что вы передаете значение типаT до функции of.

0 голосов
/ 18 ноября 2018

Попробуйте это объявление:

readonly data$: Observable<{} | T>;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...