type ObjectKeys<T> =
T extends object
? `${Exclude<keyof T, symbol>}`[]
: T extends number
? []
: T extends any | string
? string[]
: never
interface ObjectConstructor {
keys<T> (o: T): ObjectKeys<T>
}