export type ValuesOf = T[keyof T]; export type Result = OK extends true ? { ok: true; data: T; } : { ok: false; error: string; }; export type Overlap = { [K in keyof T]: K extends keyof U ? T[K] & U[K] : never; }; export type MayPromise = T | Promise; export type DeepPartial = { [P in keyof T]?: DeepPartial; }; export type StringKeyof = Extract;