TypeScript Version: 2.5
Currently Object.keys type is keys<T>(o: {}): string[]; but instead it can be keys<T = {}>(o: T): keyof T; so return type is a union of keys.
Any reason this hasn't been done before? I can make a PR if this is an acceptable change