UNPKG

rivo

Version:

🤖 The ultimate library you need for composable type-level programming in TypeScript, powered by HKT.

27 lines (23 loc) • 998 B
import type { Args, GenericFn, GenericResolver } from "../HKT"; import type { List, Pair } from "../List"; /** * Convert a {@link List} (i.e., fixed-length tuple) of key-value pairs into an object. * * Sig: `<K extends PropertyKey, V>(entries: List<readonly [K, V]>) => Record<K, V>` */ export type FromEntries<Entries extends List<Pair<PropertyKey, unknown>>> = { [K in Entries[number] as K[0]]: K[1] } extends infer R ? { [K in keyof R]: R[K] } : never; interface Resolver extends GenericResolver<[List<Pair<PropertyKey, unknown>>], object> { on1: ([entries]: Args<this>) => [ [], Record<(typeof entries)[number][0], (typeof entries)[number][1]>, ]; } /** * [Fn] Convert a {@link List} (i.e., fixed-length tuple) of key-value pairs into an object. * * Sig: `<K extends PropertyKey, V>(entries: List<readonly [K, V]>) => Record<K, V>` */ export default interface FromEntriesFn extends GenericFn<Resolver> { def: ([entries]: Args<this>) => FromEntries<typeof entries>; }