Skip to content

最后一个元素

235字小于1分钟

2022-12-01

题目

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 }>>,
]

参考