rivo
Version:
🤖 The ultimate library you need for composable type-level programming in TypeScript, powered by HKT.
17 lines (13 loc) • 672 B
TypeScript
import type { Args, GenericFn, GenericResolver } from "../HKT";
export type Get<K extends keyof O, O extends object> = K extends keyof O ? O[K] : never;
interface Resolver extends GenericResolver<[PropertyKey, object], object> {
on1_: ([k]: Args<this>) => [[{ readonly [P in typeof k]: any }], unknown];
on_1: ([, o]: Args<this>) => [[keyof typeof o], (typeof o)[keyof typeof o]];
on11: ([k, o]: Args<this>) => [
[],
typeof k extends infer K extends keyof typeof o ? (typeof o)[K] : never,
];
}
export default interface GetFn extends GenericFn<Resolver> {
def: ([k, o]: Args<this>) => typeof k extends keyof typeof o ? (typeof o)[typeof k] : never;
}