From b8e6cf838ae98a72277cb24d559b94b1f4db1707 Mon Sep 17 00:00:00 2001 From: Nicholas Jamieson Date: Thu, 26 Oct 2017 01:58:54 +1000 Subject: [PATCH] fix(typings): ensure TS types for `zip` and `combineLatest` are properly inferred. Projection functions can match ObservableInput, so overloads with project parameters are more specific and should precede ObservableInput overloads. Most existing overloads are already ordered that way; there are only two that are not: those for the static combineLatest and zip operators. --- src/observable/combineLatest.ts | 12 ++++++------ src/operators/zip.ts | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/observable/combineLatest.ts b/src/observable/combineLatest.ts index 217644768e..5712cf8d3b 100644 --- a/src/observable/combineLatest.ts +++ b/src/observable/combineLatest.ts @@ -6,12 +6,6 @@ import { ArrayObservable } from './ArrayObservable'; import { CombineLatestOperator } from '../operators/combineLatest'; /* tslint:disable:max-line-length */ -export function combineLatest(v1: ObservableInput, v2: ObservableInput, scheduler?: IScheduler): Observable<[T, T2]>; -export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, scheduler?: IScheduler): Observable<[T, T2, T3]>; -export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: IScheduler): Observable<[T, T2, T3, T4]>; -export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: IScheduler): Observable<[T, T2, T3, T4, T5]>; -export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: IScheduler): Observable<[T, T2, T3, T4, T5, T6]>; - export function combineLatest(v1: ObservableInput, project: (v1: T) => R, scheduler?: IScheduler): Observable; export function combineLatest(v1: ObservableInput, v2: ObservableInput, project: (v1: T, v2: T2) => R, scheduler?: IScheduler): Observable; export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R, scheduler?: IScheduler): Observable; @@ -19,6 +13,12 @@ export function combineLatest(v1: ObservableInput, v2: Obse export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R, scheduler?: IScheduler): Observable; export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R, scheduler?: IScheduler): Observable; +export function combineLatest(v1: ObservableInput, v2: ObservableInput, scheduler?: IScheduler): Observable<[T, T2]>; +export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, scheduler?: IScheduler): Observable<[T, T2, T3]>; +export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: IScheduler): Observable<[T, T2, T3, T4]>; +export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: IScheduler): Observable<[T, T2, T3, T4, T5]>; +export function combineLatest(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: IScheduler): Observable<[T, T2, T3, T4, T5, T6]>; + export function combineLatest(array: ObservableInput[], scheduler?: IScheduler): Observable; export function combineLatest(array: ObservableInput[], scheduler?: IScheduler): Observable; export function combineLatest(array: ObservableInput[], project: (...values: Array) => R, scheduler?: IScheduler): Observable; diff --git a/src/operators/zip.ts b/src/operators/zip.ts index 8316d52dc4..6129701bed 100644 --- a/src/operators/zip.ts +++ b/src/operators/zip.ts @@ -40,12 +40,6 @@ export function zip(...observables: Array | ((...valu } /* tslint:disable:max-line-length */ -export function zipStatic(v1: ObservableInput, v2: ObservableInput): Observable<[T, T2]>; -export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable<[T, T2, T3]>; -export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable<[T, T2, T3, T4]>; -export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable<[T, T2, T3, T4, T5]>; -export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable<[T, T2, T3, T4, T5, T6]>; - export function zipStatic(v1: ObservableInput, project: (v1: T) => R): Observable; export function zipStatic(v1: ObservableInput, v2: ObservableInput, project: (v1: T, v2: T2) => R): Observable; export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): Observable; @@ -53,6 +47,12 @@ export function zipStatic(v1: ObservableInput, v2: Observab export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): Observable; export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): Observable; +export function zipStatic(v1: ObservableInput, v2: ObservableInput): Observable<[T, T2]>; +export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable<[T, T2, T3]>; +export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable<[T, T2, T3, T4]>; +export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable<[T, T2, T3, T4, T5]>; +export function zipStatic(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable<[T, T2, T3, T4, T5, T6]>; + export function zipStatic(array: ObservableInput[]): Observable; export function zipStatic(array: ObservableInput[]): Observable; export function zipStatic(array: ObservableInput[], project: (...values: Array) => R): Observable;