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
解答
当你想从数组中获取最后一个元素时,你需要从头开始获取所有元素,直到找到最后一个元 素。这里提示使用 variadic tuple types; 我们有一个数组,我们需要处理它的元素。
了解了可变元组类型,解答也就非常明显了。我们需要将数组中除最后一个元素的其余元素 排除出去。结合 type inference in conditional types 可以很容易的推断出最后一个元素的类型了。
type Last<T extends any[]> = T extends [...infer X, infer L] ? L : never;
评论