import { MonoTypeOperatorFunction } from '../../interfaces'; import { IterableX } from '../../iterable/iterablex'; import { DistinctIterable } from '../distinct'; import { identity } from '../../internal/identity'; import { comparer as defaultComparer } from '../../internal/comparer'; export function distinct( keySelector: (value: TSource) => TKey = identity, comparer: (x: TKey, y: TKey) => boolean = defaultComparer ): MonoTypeOperatorFunction { return function distinctOperatorFunction(source: Iterable): IterableX { return new DistinctIterable(source, keySelector, comparer); }; }