<!-- 🚨 STOP 🚨 𝗦𝗧𝗢𝗣 🚨 𝑺𝑻𝑶𝑷 🚨 Half of all issues filed here are duplicates, answered in the FAQ, or not appropriate for the bug tracker. Even if you think you've found a *bug*, please read the FAQ first, especially the Common "Bugs" That Aren't Bugs section! Please help us by doing the following steps before logging an issue: * Search: https://github.com/Microsoft/TypeScript/search?type=Issues * Read the FAQ: https://github.com/Microsoft/TypeScript/wiki/FAQ Please fill in the *entire* template below. --> <!-- Please try to reproduce the issue with `typescript@next`. It may have already been fixed. --> **TypeScript Version:** 3.2.4 <!-- Search terms you tried before logging this (so others can find this issue more easily) --> **Search Terms:** Tuple, merge, combine **Code** ```ts function combine<T, U extends any[]>(item: T, items: U): [T, ...U] { return [] as any; } const result = combine("hello", ["goodbye", 123, true]); ``` **Expected behavior:** result should be typed as `[string, string, number, boolean]`. **Actual behavior:** Compile error: A rest element type must be an array type. **Playground Link:** <!-- A link to a TypeScript Playground "Share" link which demonstrates this behavior --> [Link](https://www.typescriptlang.org/play/#src=function%20combine%3CT%2C%20U%20extends%20any%5B%5D%3E(item%3A%20T%2C%20items%3A%20U)%3A%20%5BT%2C%20...U%5D%20%7B%0D%0A%20%20%20%20return%20%5B%5D%20as%20any%3B%0D%0A%7D%0D%0A%0D%0Aconst%20result%20%3D%20combine(%22hello%22%2C%20%5B%22goodbye%22%2C%20123%2C%20true%5D)%3B%0D%0A) **Related Issues:** <!-- Did you find other bugs that looked similar? -->