UNPKG

rivo

Version:

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

21 lines (18 loc) • 594 B
import type { Merge } from "./Merge"; import type { Args, Fn } from "../HKT"; import type { List } from "../List"; /** * Spread a {@link List} of objects into one object. * * Sig: `(os: List<object>) => object` */ export type Spread<OS extends List<object>> = OS extends [infer L extends object, ...infer R extends object[]] ? Merge<L, Spread<R>> : object; /** * [Fn] Spread a {@link List} of objects into one object. * * Sig: `(os: List<object>) => object` */ export default interface SpreadFn extends Fn<[List<object>], object> { def: ([os]: Args<this>) => Spread<typeof os>; }