rivo
Version:
🤖 The ultimate library you need for composable type-level programming in TypeScript, powered by HKT.
15 lines (11 loc) • 649 B
TypeScript
import type { Args, GenericFn, GenericResolver } from "../HKT";
import type { None, Option, Some } from "../Option";
export type TryGet<K extends PropertyKey, O extends object> = K extends keyof O ? Some<O[K]> : None;
interface Resolver extends GenericResolver<[PropertyKey, object], Option<unknown>> {
on1_: ([k]: Args<this>) => [[object], Option<unknown>];
on_1: ([, o]: Args<this>) => [[PropertyKey], Option<(typeof o)[keyof typeof o]>];
on11: ([k, o]: Args<this>) => [[], Option<(typeof o)[keyof typeof o]>];
}
export default interface TryGetFn extends GenericFn<Resolver> {
def: ([k, o]: Args<this>) => TryGet<typeof k, typeof o>;
}