There's a new version of TypeScript that has tightened up type-checking for methods on functions, and added a way to handle spreads of existing objects into new objects. TypeScript is the superset of ...