UNPKG

rivo

Version:

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

28 lines (24 loc) • 883 B
import type { Option, Some } from "."; import type { Args, GenericFn, GenericResolver } from "../HKT"; import type { AssertUnknown } from "../helpers"; /** * Get the inner value of an {@link Option} if it is {@link Some}, otherwise return `never`. * * Type safety is **not guaranteed**. * * Sig: `<T>(o: Option<T>) => T` */ export type Unwrap<O extends Option<unknown>> = AssertUnknown<O extends Some<infer T> ? T : never>; interface Resolver extends GenericResolver<[Option<unknown>], unknown> { on1: ([o]: Args<this>) => [[], typeof o extends Option<infer T> ? T : never]; } /** * [Fn] Get the inner value of an {@link Option} if it is {@link Some}, otherwise return `never`. * * Type safety is **not guaranteed**. * * Sig: `<T>(o: Option<T>) => T` */ export default interface UnwrapFn extends GenericFn<Resolver> { def: ([o]: Args<this>) => Unwrap<typeof o>; }