UNPKG

rivo

Version:

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

28 lines (24 loc) • 819 B
import type { List } from "."; import type { Args, GenericFn, GenericResolver } from "../HKT"; import type { None, Option, Some } from "../Option"; /** * Get all elements in a {@link List} except the first one. * * Sig: `<T>(xs: List<T>) => Option<List<T>>` */ export type Tail<TS extends List> = TS extends readonly [unknown, ...infer Tail] ? Some<Tail> : None; interface Resolver extends GenericResolver<[List], Option<List<unknown>>> { on1: ([xs]: Args<this>) => [ [], Option<typeof xs extends unknown[] ? (typeof xs)[number][] : List<(typeof xs)[number]>>, ]; } /** * [Fn] Get all elements in a {@link List} except the first one. * * Sig: `<T>(xs: List<T>) => Option<List<T>>` */ export default interface TailFn extends GenericFn<Resolver> { def: ([xs]: Args<this>) => Tail<typeof xs>; }