diff --git a/packages/rxjs/spec/operators/distinctUntilChanged-spec.ts b/packages/rxjs/spec/operators/distinctUntilChanged-spec.ts index 75a59d45e9..c73398ba9f 100644 --- a/packages/rxjs/spec/operators/distinctUntilChanged-spec.ts +++ b/packages/rxjs/spec/operators/distinctUntilChanged-spec.ts @@ -263,6 +263,18 @@ describe('distinctUntilChanged', () => { }); }); + it('should allow passing undefined as comparator', () => { + testScheduler.run(({ hot, expectObservable, expectSubscriptions }) => { + const e1 = hot(' --a--b--|', { a: 2, b: 4 }); + const e1subs = ' ^-------!'; + const expected = '--a-----|'; + const keySelector = (x: number) => x % 2; + + expectObservable(e1.pipe(distinctUntilChanged(undefined, keySelector))).toBe(expected, { a: 2 }); + expectSubscriptions(e1.subscriptions).toBe(e1subs); + }); + }); + it('should raise error when keySelector throws', () => { testScheduler.run(({ hot, expectObservable, expectSubscriptions }) => { const e1 = hot(' --a--b--c--d--e--f--|'); diff --git a/packages/rxjs/src/internal/operators/distinctUntilChanged.ts b/packages/rxjs/src/internal/operators/distinctUntilChanged.ts index 7cebddec78..e4af6c2f37 100644 --- a/packages/rxjs/src/internal/operators/distinctUntilChanged.ts +++ b/packages/rxjs/src/internal/operators/distinctUntilChanged.ts @@ -4,7 +4,7 @@ import { Observable, operate } from '@rxjs/observable'; export function distinctUntilChanged(comparator?: (previous: T, current: T) => boolean): MonoTypeOperatorFunction; export function distinctUntilChanged( - comparator: (previous: K, current: K) => boolean, + comparator: ((previous: K, current: K) => boolean) | undefined, keySelector: (value: T) => K ): MonoTypeOperatorFunction;