お題
タプルに要素を追加する型Push
(Array.push
のジェネリックバージョン)を実装する。
やりたいこと
type Result = Push<[1, 2], '3'> // [1, 2, '3']
解答
type Push<T extends unknown[], U> = [...T, U];
解説
処理の流れ
-
<T extends unknown[], U>
タプルに要素を追加するので、T
に制限をかける。 -
[...T, U]
スプレッド構文で展開したT
の要素とU
を[]でラッピングし、新たなタプルを作成する。
配列型を扱う注意点
type T = number[]; // 配列型
type Result = [...T, boolean]; // エラー
スプレッド構文とは...
今回の問題