UNPKG

rivo

Version:

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

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