export function mapObject( input: Record, mapper: (i: I, k: K) => O, ): Record export function mapObject( input: Record, mapper: (i: I, k?: K) => O, ): Record { return Object.fromEntries( Object.entries(input).map( ([key, value]: any) => [key, mapper(value, key)] as const, ), ) as any } export type StringRecord = { [Sym: symbol]: never [Num: number]: never [Str: string]: T } export const mapStringRecord = ( input: StringRecord, mapper: (value: I, key: string) => O, ): StringRecord => Object.fromEntries( Object.entries(input).map(([key, value]) => [key, mapper(value, key)]), ) as StringRecord