I need generic that from interface like type X = { a: string, b?: string, c: number }
would extract required keys 'a' | 'c'
I came up with
type RequiredFields<T> =
keyof T extends infer R
? R extends keyof T
? undefined extends T[R]
? never
: R
: never
: never
And I wonder if there is easier/more legitimate way of achieving this