rivo
Version:
🤖 The ultimate library you need for composable type-level programming in TypeScript, powered by HKT.
21 lines (18 loc) • 594 B
TypeScript
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>;
}