At that time before TypeScript 2.8, there wasn't a clean solution about how to "Omit" some keys from an existing interface. But now we can use the new conditional type "Exclude" to improve type safety ...