type-challenges 17日目: 15-last-of-array

問題 & 解答

https://github.com/type-challenges/type-challenges/blob/main/questions/00015-medium-last/README.md

配列Tをとって、最後の要素の型を返すLast<T>を実装する。

Variadic Tuple Typesが要素の最後でなくても使えるのがポイント。最後以外の要素を_Restとして受けて、最後の要素をLastで参照する。

type Last<T extends any[]> = T extends [...infer _Rest, infer Last] ? Last: never

類似の問題はこれ。

https://ikuma-t.work/posts/type-challenge-first-of-array

別に参照する必要がないのであれば、inferにする必要もない

type Last<T extends any[]> = T extends [...any, infer Last] ? Last: never

そのうち、Lastを書くのも煩わしくなるくらいに慣れてきたら、これくらいが妥当なのかもしれない。

type Last<T extends any[]> = T extends [...any, infer L] ? L: never

感想

類似の問題とはいえ、久しぶりに解く問題でもスラスラと解けるようになっているので、これをやっている意味はあると思われる。


Buy Me A Coffeeikuma-tにお恵みを!