错误TS2322:类型为'Observable <{} | T>'不能分配给类型'Observable <t>'

时间:2018-11-18 10:06:58

标签: angular rxjs angular7

我发现了这个关于Angular异步管道错误处理的示例,它看起来很有前途:https://sebastian-holstein.de/post/error-handling-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 :(得分:6)

这是因为您执行return of();,并且传递给of的值不是T类型。

您可以改为执行return of(null);,或确保将类型T的值传递给of函数。

答案 1 :(得分:0)

尝试以下声明:

readonly data$: Observable<{} | T>;