UNPKG

rivo

Version:

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

37 lines (33 loc) • 1.18 kB
// @ts-ignore - Only used in doc comments import type { Filter } from "./Filter"; // @ts-ignore - Only used in doc comments import type FilterFn from "./Filter"; import type { Args, Call1W, Fn1, GenericFn, GenericResolver, Param0 } from "../HKT"; /** * Keep elements of a union that do not satisfy a predicate. * * Sig: `<T>(pred: (x: T) => boolean, u: UnionOf<T>) => UnionOf<T>` * * @see {@link Filter} for the opposite. */ export type Reject<Pred extends Fn1<never, boolean>, U> = U extends U ? Call1W<Pred, U> extends false ? U : never : never; interface Resolver extends GenericResolver<[Fn1<never, boolean>, unknown], unknown> { on1_: ([pred]: Args<this>) => [[Param0<typeof pred>], Param0<typeof pred>]; on_1: ([, u]: Args<this>) => [[Fn1<typeof u, boolean>], typeof u]; on11: ([pred, u]: Args<this>) => [[], typeof u]; } /** * [Fn] Keep elements of a union that do not satisfy a predicate. * * Sig: `<T>(pred: (x: T) => boolean, u: UnionOf<T>) => UnionOf<T>` * * @see {@link FilterFn} for the opposite. */ export default interface RejectFn extends GenericFn<Resolver> { def: ([pred, u]: Args<this>) => Reject<typeof pred, typeof u>; }