TypeScript入門 配列の最後の要素の型を取得する方法

配列の最後の要素の型を取得する方法です。

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

type T1 = Last<[string, number]> // number
type T2 = Last<[string, string, number]> // number
type T3 = Last<[string]> // string
type T4 = Last<[]> // never
type T5 = Last<[string, (v: string) => number]> // (v: string) => number