import { set } from './set'; export function map, K extends number, U>( input: T, fn: (obj: Readonly, key: number) => U, ): Array; export function map, K extends keyof T, U>( input: T, fn: (obj: Readonly, key: string) => U, ): { [key in K]: U }; export function map(input: any, fn: any) { let result: any = input; for (const key in input) { result = set(result, key, fn(input[key], key)); } return result; }