/// module Rx { export interface Observable { /** * Returns an observable sequence that contains only distinct elements according to the keySelector and the comparer. * Usage of this operator should be considered carefully due to the maintenance of an internal lookup structure which can grow large. * * @example * var res = obs = xs.distinct(); * 2 - obs = xs.distinct(function (x) { return x.id; }); * 2 - obs = xs.distinct(function (x) { return x.id; }, function (a,b) { return a === b; }); * @param {Function} [keySelector] A function to compute the comparison key for each element. * @param {Function} [comparer] Used to compare items in the collection. * @returns {Observable} An observable sequence only containing the distinct elements, based on a computed key value, from the source sequence. */ distinct(keySelector?: (value: T) => TKey, keySerializer?: (key: TKey) => string): Observable; } } (function () { var o : Rx.Observable; o = o.distinct(); o = o.distinct(x => x.length); o = o.distinct(x => x.length, x => x.toString() + '' + x); });