反復可能なオブジェクトを引数に渡したり分解する構文。関数の引数や[[配列 (JavaScript)|配列]]、[[Object (JavaScript)|Object]]に利用できる。
```ts
const xs = [1, 2, 3] as const
const ys = [4, 5] as const
const obj = {id: "id", name: "name"} as const
const sum = (x: number , y: number, z: number) => x + y + z
console.log(sum(...xs)) // 6
console.log(sum(...[1], ...[2, 3])) // 6
console.log(
Object.assign({...obj, id: "override"})
)
// {id: "override", name: "name"}
```
<button class="playground"><a href="https://www.typescriptlang.org/play?ts=5.1.3#code/MYewdgzgLgBAHhGBeGBtAjAGhgJmwZgF0YBDRUSKAKAuhgE9EVUAWbAVmLJlut5hAAjAFbIYAbwCWAEwBcMAEQyF2MCQC2AU3kK1WhQF9S5cNCo1TsCAFd1YgBRx5YW4M0AnGNnrPXH7ABevupu7gCUyAB88DAA1AxxMAEWkCAANpoAdGkgAOb2Nur2mSUIYREA9BUwAGwpEOlZOfmFxSUYhNglmah4METlMFW19Y3ZefZUMDAA8iKawFCZZBCSuWD24t1CwtgyOiAAbh7uMpqGYVSXw1JyikcnZyowetqKr4ZUQA">Playground</a></button>
> [!attention]
> [[残余引数 (JavaScript)|残余引数]]と勘違いしやすいので注意。