[[残余プロパティ (JavaScript)|残余プロパティ]]を持つ[[タプル型 (TypeScript)|タプル型]]について。`...T[]`の表記は**0以上**の連続した`T`型の[[タプル型 (TypeScript)|タプル型]]と解釈される。
```ts
type T1 = [number, ...string[], number];
type T2 = [...string[], number];
type T3 = [number, ...string[]];
// OK
const t1Ok1: T1 = [1, "a", 1];
const t1Ok2: T1 = [1, "a", "a", 1];
const t1Ok3: T1 = [1, 1];
// Error
const t1Err1: T1 = ["a", "a", 1];
const t1Err2: T1 = [1, "a", "a"];
const t1Err3: T1 = [1];
// OK
const t2Ok1: T2 = ["a", 1];
const t2Ok2: T2 = ["a", "a", 1];
const t2Ok3: T2 = [1];
// Error
const t2Err1: T2 = [1, "a", "a", 1];
const t2Err2: T2 = [1, "a", "a"];
const t2Err3: T2 = [1, 1];
// OK
const t3Ok1: T3 = [1, "a"];
const t3Ok2: T3 = [1, "a", "a"];
const t3Ok3: T3 = [1];
// Error
const t3Err1: T3 = [1, "a", "a", 1];
const t3Err2: T3 = ["a", "a", 1];
const t3Err3: T3 = [1, 1];
```
<button class="playground"><a href="https://www.typescriptlang.org/play?#code/C4TwDgpgBAKgjFAvFA2gOwK4FsBGEBOANFAHRkDOw+AlmgOYoC6xmuBjA3AFCiSwBMSVGRKUa9Ji2x58nHuGgwAzEPTSCxEWNoNGcrgHoDUAPIBpLgGMA9mkpRgcEwGs4ALlgJkKOMQBEAIZ+xHByNnbADk7O-B7wqr5QgcFJQSFhtvaOLkpxXqiJodxGUACi+PjW+FaZkY7l+O6eqsn+aVBFNRFRDbHN3omtqX4Z3fUVuf0F+iXmXVn8Lk0wgt5DneELLn0rLe3ro1vOk7sDciUNVfN1-A3LqwVtKQfcmze9cQ8+T0+H7xOfBLpbiGYxzN4OJRLOIqAa-V61SHbGFA4bw65I44os7FYyXaoQ4BKO7Yx5o8kbRFEj6wWGoIYvDHUgG01GdIA">Playground</a></button>
- [[タプル型 (TypeScript)|タプル型]]が[[残余プロパティ (JavaScript)|残余プロパティ]]に対応したのは[[TypeScript 3.0]]から (末尾のみ)
- 末尾以外にも対応したのは[[TypeScript 4.2]]から