/* eslint-disable @typescript-eslint/no-redundant-type-constituents */

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>
}
