最后一个元素
小于 1 分钟TC-Medium
最后一个元素
题目
实现一个Last<T>
泛型,它接受一个数组T
并返回其最后一个元素的类型。
例如
type arr1 = ['a', 'b', 'c']
type arr2 = [3, 2, 1]
type tail1 = Last<arr1> // 应推导出 'c'
type tail2 = Last<arr2> // 应推导出 1
解答
type Last<T extends readonly any[]> = T extends [...infer _, infer Tail] ? Tail : never
本题考查了infer
的基本使用。
我们提出了一个模式[...infer Front, infer Tail]
,它匹配了一个元组的最后一个元素。 ...infer Front
指示了Front
可以匹配任意长度的元素,而infer Tail
则匹配了最后一个元素。
由于Front
不是我们关心的部分,我们使用了_
来忽略它。