Observable.forkJoin неверный тип возврата, когда более 6 аргументов

У меня есть проблема с 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>>, Компилятор определяет, что возврат должен быть Type1[][] когда мне поступило более 6 вызовов от службы. Это работает нормально до 6, хотя, оно будет иметь правильный возврат, и я могу назначить строго типизированные результаты.

Я использую rxjs 5.4.3 и Typescript 2.4.0 (Инструменты Typescript для Visual Studio 2.5.2).

Есть ли обходной путь для этого, не применяя его?

1 ответ

Решение

Наборы для forkJoin определить макс forkJoin с 6 параметрами, как вы можете видеть здесь: https://github.com/ReactiveX/rxjs/blob/master/src/observable/ForkJoinObservable.ts#L27

Обратите внимание, что есть разные способы вызова forkJoin с более чем 6 параметрами:

Observable.forkJoin(observables)

или же

Observable.forkJoin(...observables)

Вы также можете принудительно возвращать типы ( https://github.com/ReactiveX/rxjs/blob/master/src/observable/ForkJoinObservable.ts#L35):

Observable.forkJoin<Whatever[]>(observables)
Другие вопросы по тегам