此页内容

约 255 字小于 1 分钟

2022-12-01

题目

Github: First of array

实现一个通用First<T>,它接受一个数组T并返回它的第一个元素的类型。

type arr1 = ['a', 'b', 'c']
type arr2 = [3, 2, 1]

type head1 = First<arr1> // expected to be 'a'
type head2 = First<arr2> // expected to be 3

解题思路

获取数组的第一个元素类型,首先很自然的想到通过 索引类型,通过 T[0] 获取类型, 但是这里会有一个临界情况,如果传入的是一个空数组,会导致 T[0] 不能正常工作,因为它没有元素。

所以在获取数组的第一个元素类型前,需要检查数组是否为空。 可以通过 条件类型 推断数组是否为空,如果为空,则什么都不返回。

答案

type First<T extends any[]> = T extends [] ? never : T[0]

参考