export function toMap(src: Iterable, keySelector: (item: TSource) => TKey): Map; export function toMap( src: Iterable, keySelector: (item: TSource) => TKey, valueSelector: (item: TSource) => TValue ): Map; export function toMap( src: Iterable, keySelector: (item: TSource) => TKey, valueSelector?: (item: TSource) => TValue ): Map; export function toMap( src: Iterable, keySelector: (item: TSource) => TKey, valueSelector?: (item: TSource) => TValue ): Map { const map = new Map(); if (valueSelector) { for (const item of src) { const key = keySelector(item); map.set(key, valueSelector(item)); } } else { for (const item of src) { const key = keySelector(item); map.set(key, item); } } return map; }