問題 & 解答
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
感想
類似の問題とはいえ、久しぶりに解く問題でもスラスラと解けるようになっているので、これをやっている意味はあると思われる。