问题 #
实现一个通用Last<T>
,它接受一个数组T
并返回其最后一个元素的类型。
例如
type arr1 = ['a', 'b', 'c']
type arr2 = [3, 2, 1]
type tail1 = Last<arr1> // expected to be 'c'
type tail2 = Last<arr2> // expected to be 1
解答 #
type Last<T extends unknown[]> = T extends [...any, infer L ] ? L : never
拆分 #
T extends unknown[]
是一个类型断言,确保T
是一个数组- 利用结构和
infer
来拿到最后一个值 - 利用
L
来确认L
是否是T
的最后一个元素