配列や[[オブジェクト (JavaScript)|オブジェクト]]を[[分割代入 (JavaScript)|分割代入]]したとき、残りの項目を割り当てるために使う表現。以下の`...restXs`と`...restObj`がそれにあたる。
```ts
const xs = [1, 2, 3, 4, 5]
const obj = {a: 1, b: 2, c: 3, d: 4, e: 5}
const [e1, e2, ...restXs] = xs
// ^? const restXs: number[]
const {a, b, ...restObj} = obj
// ^? const restObj: { c: number; d: number; e: number; }
console.log(restXs)
// [3, 4, 5]
console.log(restObj)
// {"c": 3, "d": 4, "e": 5}
```
<button class="playground"><a href="https://www.typescriptlang.org/play?#code/MYewdgzgLgBAHhGBeGBtAjAGhgJmwZmwBZsBWAXQChRJYQAjAK2RgG8BDALhixnu7wxg3QjAAm3EjACm3UgF9K1cNDTTe0wQDodAJ2nQAGhHIsElAPQWYN23fswAegH5ltNu2z1sOrfugA8kzyLAyMltYOUS5KNBAgADbSWgkgAOYAFP5QxgCUEWiiUhRu8Ukp6VkGUEGM+VZsAETAjSLYjWKtMFKN0l0KQA">Playground</a></button>
> [!attention]
> [[スプレッド構文 (JavaScript)|スプレッド構文]]や[[残余引数 (JavaScript)|残余引数]]と勘違いしやすいので注意。