UNPKG

rivo

Version:

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

31 lines (27 loc) • 1.01 kB
import type { Args, GenericFn, GenericResolver } from ".."; /** * Append an element to a tuple. * * Sig: `<TS extends readonly unknown[], U>(y: U, xs: TS) => [...TS, U]` */ export type Append<U, TS extends readonly unknown[]> = TS extends unknown[] ? [...TS, U] : readonly [...TS, U]; interface Resolver extends GenericResolver<[unknown, readonly unknown[]], readonly unknown[]> { on1_: ([y]: Args<this>) => [[readonly unknown[]], readonly unknown[]]; on_1: ([, xs]: Args<this>) => [ [unknown], typeof xs extends unknown[] ? [...typeof xs, unknown] : readonly [...typeof xs, unknown], ]; on11: ([y, xs]: Args<this>) => [ [], typeof xs extends unknown[] ? [...typeof xs, typeof y] : readonly [...typeof xs, typeof y], ]; } /** * [Fn] Append an element to a tuple. * * Sig: `<TS extends readonly unknown[], U>(y: U, xs: TS) => [...TS, U]` */ export default interface AppendFn extends GenericFn<Resolver> { def: ([y, xs]: Args<this>) => Append<typeof y, typeof xs>; }