问题 #
实现一个通用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的最后一个元素