Skip to content

第一个元素

题目

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

例如:

ts
type arr1 = ["a", "b", "c"];
type arr2 = [3, 2, 1];

type head1 = First<arr1>; // 应推导出 'a'
type head2 = First<arr2>; // 应推导出 3

解答

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

精选

ts
//answer1
type First<T extends any[]> = T extends [] ? never : T[0];

//answer2
type First<T extends any[]> = T["length"] extends 0 ? never : T[0];

//answer3
type First<T extends any[]> = T extends [infer A, ...infer rest] ? A : never;

Released under the MIT License.