【问题标题】:Observable.forkJoin wrong return type when more than 6 argumentsObservable.forkJoin 超过 6 个参数时返回类型错误
【发布时间】:2018-03-03 04:30:27
【问题描述】:

我遇到了 Observable.forkJoin 的问题,它推断错误的返回类型,然后在我传递超过 6 个参数时导致错误。

Observable.forkJoin(service.getType1, service.getType2, service.getType3 ...)
        .subscribe(x => {
            this.type1Arr = x[0];
            this.type2Arr = x[1];
            this.type3Arr = x[2];

来自服务的每个函数调用都返回一个Observable<Array<type>>。当我从传入的服务调用超过 6 次时,编译器确定返回应该是 Type1[][]。不过,它最多可以工作 6 次,它将具有正确的返回,并且我可以分配强类型的结果。

我正在使用 rxjs 5.4.3 和 Typescript 2.4.0(Visual Studio 的 Typescript 工具是 2.5.2)。

有没有不强制转换的解决方法?

【问题讨论】:

  • 很高兴知道这一点!我认为这可能是一些错误是服务站点。它确实证明了解决方案。如果有的话,你可以看看那里的文件

标签: angular rxjs observable rxjs5


【解决方案1】:

forkJoin 的类型定义 max forkJoin 有 6 个参数,您可以在此处看到:https://github.com/ReactiveX/rxjs/blob/master/src/observable/ForkJoinObservable.ts#L27

请注意,使用超过 6 个参数调用 forkJoin 有不同的方法:

Observable.forkJoin(observables)

Observable.forkJoin(...observables)

您还可以强制返回类型 (https://github.com/ReactiveX/rxjs/blob/master/src/observable/ForkJoinObservable.ts#L35):

Observable.forkJoin<Whatever[]>(observables)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-11-26
  • 2021-11-28
  • 2017-03-30
  • 2014-02-24
  • 1970-01-01
  • 2019-12-12
  • 2018-09-07
  • 1970-01-01
相关资源
最近更新 更多