mosya

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。

サイトの模写でプロを目指す
オンライン学習サービスを作りました!

詳しくはこちら
mosya

mosyaはオンラインでWeb制作を自学習できるサービスです。現役エンジニアが作成した豊富なカリキュラムに沿って学習を進めましょう。

© 2023 - mosya. All rights reserved.