[[残余プロパティ (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]]から