import { Dictionary } from '../dictionary' import { EqualityComparer, IEqualityComparer } from '../equality-comparer' import * as utils from '../utils' export function toDictionary( source: Iterable, keySelector: (item: TSource) => TKey, elementSelector?: (item: TSource) => TElement, comparer?: IEqualityComparer ): Dictionary { utils.throws.ThrowIfNull('source', source) utils.throws.ThrowIfNull('keySelector', keySelector) let _elementSelector: any = elementSelector || ((x) => x) comparer = comparer || EqualityComparer.Default() let dictionary = new Dictionary(null, comparer) for (let item of source) { let key = keySelector(item) let value = _elementSelector(item) dictionary.Add(key, value) } return dictionary }