UNPKG

hkt-toolbelt

Version:

Functional and composable type utilities

12 lines (11 loc) 533 B
import { Kind, Type } from '..'; export type _$merge<A extends Record<string, unknown>, B extends Record<string, unknown>> = Type._$display<{ [K in keyof A | keyof B]: K extends keyof B ? B[K] : K extends keyof A ? A[K] : never; }>; interface Merge_T<A extends Record<string, unknown>> extends Kind.Kind { f(x: Type._$cast<this[Kind._], Record<string, unknown>>): _$merge<A, typeof x>; } export interface Merge extends Kind.Kind { f(x: Type._$cast<this[Kind._], Record<string, unknown>>): Merge_T<typeof x>; } export {};