From 0753ff7ab426379130ec6fe9d8207047c084265e Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Wed, 25 Oct 2017 08:19:30 -0700 Subject: [PATCH] fix(publishReplay): improved type inference for arguments (#2992) * operator/publishReplay.ts:give type args to higherOrder call operator/publishReplay delegates to operators/publishReplay. The call is correct — *one* of the three overloads will be called, and it doesn't matter which — but the compiler has to choose one overload. This change provides the type arguments explicitly so that the most general overload gets called. This results in the the correct return type, `OperatorFunction`. * fix: give type args to higherOrder call in src/operator/publishReplay.ts operator/publishReplay delegates to operators/publishReplay. The call is correct — *one* of the three overloads will be called, and it doesn't matter which — but the compiler has to choose one overload. Previously, the call didn't include type arguments, and the type of the one argument that would be used for inference, selectorOrScheduler, was of type `any`. So the compiler chose the first overload with four parameters. However, the return type of this overload is incorrect, whereas the return type of the third overload is correct. Provide the type arguments explicitly so that the last, most general overload gets called. This results in the the correct return type, `OperatorFunction`. Closes #2991 --- src/operator/publishReplay.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/operator/publishReplay.ts b/src/operator/publishReplay.ts index 735af72340..276dbcb433 100644 --- a/src/operator/publishReplay.ts +++ b/src/operator/publishReplay.ts @@ -24,5 +24,5 @@ export function publishReplay(this: Observable, bufferSize?: number, selectorOrScheduler?: IScheduler | OperatorFunction, scheduler?: IScheduler): Observable | ConnectableObservable { - return higherOrder(bufferSize, windowTime, selectorOrScheduler as any, scheduler)(this); + return higherOrder(bufferSize, windowTime, selectorOrScheduler as any, scheduler)(this); }