import type { Option, Some } from "."; import type { Args, GenericFn, GenericResolver } from "../HKT"; import type { AssertUnknown, Broaden } from "../helpers"; /** * Get the inner value of an {@link Option} if it is {@link Some}, otherwise return `Default`. * * Sig: `(default: T, o: Option) => T` */ export type UnwrapOr> = AssertUnknown< O extends Some ? T : Default >; interface Resolver extends GenericResolver<[unknown, Option], unknown> { on1_: ([d]: Args) => [[Option>], Broaden]; on_1: ([, o]: Args) => [ [Option ? T : never>], typeof o extends Option ? T : never, ]; on11: ([d, o]: Args) => [[], (typeof o extends Option ? T : never) | typeof d]; } /** * [Fn] Get the inner value of an {@link Option} if it is {@link Some}, otherwise return `default`. * * Sig: `(default: T, o: Option) => T` */ export default interface UnwrapOrFn extends GenericFn { def: ([d, o]: Args) => UnwrapOr; }