export type UnionKeys = T extends any ? keyof T : never; export type ExtractPropertyType< T, P extends string | number | symbol > = T extends { [K in P]: any; } ? T[P] : never;