<!-- Please try to reproduce the issue with `typescript@next`. It may have already been fixed. --> **TypeScript Version:** 2.9.1 <!-- Search terms you tried before logging this (so others can find this issue more easily) --> **Search Terms:** object type, generic, spread, error **Code** ```ts function test<T extends object>(a: T) { return { ...a }; } ``` **Expected behavior:** No error. **Actual behavior:** Error: Spread types may only be created from object types. **Playground Link:** [Here you go.](http://www.typescriptlang.org/play/index.html#src=function%20test%3CT%20extends%20object%3E(a%3A%20T)%20%7B%0D%0A%20%20%20%20return%20%7B...a%7D%0D%0A%7D) **Related Issues:** <!-- Did you find other bugs that looked similar? --> None found so far.