export type NumberKeys = { [K in keyof O]: number extends O[K] ? K : never }[keyof O]; export type ArrayKeys = { [K in keyof O]: P[] extends O[K] ? K : never }[keyof O]; export type Value = { [K in keyof O]: V }; export type Projection = (string & keyof O)[];