Skip to content

Latest commit

 

History

History
33 lines (23 loc) · 1.17 KB

FirstArray.md

File metadata and controls

33 lines (23 loc) · 1.17 KB
标题 标签
FirstArray(提取数组第一项) extends,array(继承,数组)

提取数组第一项。

  • 数组 T 继承任意数组,如果数组 T 继承空数组,则返回 never,否则返回数组第一项。
  • 数组 T 继承任意数组,如果数组 T 的长度属性为 0,则返回 never,否则返回数组第一项。
  • 数组 T 继承任意数组,如果数组 T 继承任意推断的数组,则返回一项,否则返回 never。

代码如下:

type FirstArray<T extends any[]> = T extends [] ? never : T[0];
// type FirstArray<T extends any []> = T['length'] extends 0 ? never : T[0];
// type FirstArray<T extends any []> = T extends [infer A,...infer rest] ? A : never;

使用方式:

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

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

应用场景

如下所示,鼠标悬浮到对应的类型变量可以查看类型。