<!-- BUGS: Please use this template. --> <!-- QUESTIONS: This is not a general support forum! Ask Qs at http://stackoverflow.com/questions/tagged/typescript --> <!-- SUGGESTIONS: See https://github.com/Microsoft/TypeScript-wiki/blob/master/Writing-Good-Design-Proposals.md --> <!-- Please try to reproduce the issue with `typescript@next`. It may have already been fixed. --> **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