With the following code
type labels = [a: number, b: string]
type spread = [...labels]
type combined = [c: boolean, ...labels]
spread keeps the labels a and b, but when combining these into combined type, type checking gives an error saying all tuple type members must all have names or do not have names. This means in the second case, the destructuring also erases the labels a and b, making it equivalent to c: boolean, number, string.
How can the combined type be done properly?