最后一个元素
题目
Github: Last of array
实现一个通用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 any[]> = T extends [...any[], infer R] ? R : never
验证
type cases = [
Expect<Equal<Last<[]>, never>>,
Expect<Equal<Last<[2]>, 2>>,
Expect<Equal<Last<[3, 2, 1]>, 1>>,
Expect<Equal<Last<[() => 123, { a: string }]>, { a: string }>>,
]