問題
JavaScript の`Array.concat`関数を型システムに実装します。この型は 2 つの引数を受け取り、受け取ったイテレータの要素を順に含む新しい配列を返します。
例えば:
```ts
type Result = Concat<[1], [2]>; // expected to be [1, 2]
```
回答
type Concat<T extends readonly any[], U extends readonly any[]> = [...T, ...U]
ちょっと解説
readonly any[]
readonlyをつけておくことでミュータブル/イミュータブル両方の配列を受け取れます。
例えば...
- [1, 2, 3] / readonly [1, 2, 3]
などの組み合わせをすべて許可できます。