mosya<TC> - 配列から最後の要素を削除する型を実装しよう
この記事はmosya<TC>の問題の一つであるPop型の解説になります。
問題
配列 T
を受け取り、最後の要素を除いた配列を返す汎用的な Pop<T>
を実装してください。
type arr1 = ["a", "b", "c", "d"];
type arr2 = [3, 2, 1];
type re1 = Pop<arr1>; // expected to be ['a', 'b', 'c']
type re2 = Pop<arr2>; // expected to be [3, 2]
解答例
type Pop<T extends any[]> = T extends [
...infer U,
any
]
? U
: never;
今回は、T
が配列であることが条件なので、T extends any[]
という条件を指定します。
そして、配列の中の要素を返すには推論のためのinfer
と条件のためのextends
構文を組み合わせます。
スプレッド演算子を使うことで、配列の最後以外の要素を、...
で配列として取得し、それをU
という名前で受け取ります。
Authored by
Godai@steelydylan
Webサービスを作るのが好きなWebエンジニア。子供が産まれたことをきっかけに独立し法人化。サービス開発が大好き。
好きな言語はTypeScript。