返回subject.asObservable()时的Typescript错误

时间:2018-04-25 12:55:51

标签: typescript compiler-errors observable typescript-generics

我有一个问题,希望你能帮助我。谢谢

升级到Typescript 2.9.1后,编译器抱怨没有返回该方法应该返回的类型。

当前代码:

public getCardPairingSession(sessionId:string):Observable<FundSourceCardSessionInterface> {
    const subject = new Subject();

    this.apiService
      .get(this.buildApiPath('card-session/' + sessionId))
      .subscribe(
        (response) => {
          subject.next(response.result);
        },
        (error) => {
          subject.error(error);
        }
      );
/* <-- ERROR: Type 'Observable<{}>' is not assignable to type 'Observable<FundSourceCardSessionInterface>' */
    return subject.asObservable();
  }

我的解决方案:

到目前为止,我正在做我的回报,虽然我不知道它是否正确,对我来说看起来很奇怪。

return  <Observable<FundSourceCardSessionInterface>> subject.asObservable();

问题:

如果以前使用Typescript 2.3.4工作正常,现在我不明白为什么它没有?,如果我已经在方法的开头指定了哪个返回值,我为什么必须转换返回? ?基本上是重复代码:

public getCardPairingSession(sessionId:string):Observable<FundSourceCardSessionInterface> {

1 个答案:

答案 0 :(得分:1)

错误很明确:您声明该函数返回Observable<FundSourceCardSessionInterface>并且您正在返回Observable<{}>。我认为(不完全确定)之前,TypeScript明白您要返回Observable<any>,而Observable<any>可以分配给Observable<FundSourceCardSessionInterface>。但是,{}无法分配FundSourceCArdSessionInterface

更改您宣告Subject

的方式
const subject = new Subject<FundSourceCardSessionInterface>();`