Open yunliuyan opened 11 months ago
通过索引取元组的第一个值
type arr1 = ['a', 'b', 'c']
type arr2 = [3, 2, 1]
type First<T extends any[]> = T[0]
type head1 = First<arr1> // expected to be 'a'
type head2 = First<arr2> // expected to be 3
type First<T extends any[]> = T extends [infer P, ...any[]] ? P : never;
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
type First<T extends unknown[]> = T extends [infer U, ...unknown[]] ? U : never;
type arr1 = ['a', 'b', 'c'];
type arr2 = [3, 2, 1];
type tail1 = First<arr1>; // expected to be 'a'
type tail2 = First<arr2>; // expected to be 3
// 实现一个通用First<T>,它接受一个数组T并返回它的第一个元素的类型。
type First<T extends any[]> = T extends [infer F, ...infer arg] ? F : never;
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
type MyEasyFirst<T extends any[]> = T[0];
const easyFirstFun = () => 1;
type easyFirstArr1 = ["a", "2", 3, true];
type easyFirstArr2 = [2, "2", 3, true];
type easyFirstArr3 = [false, "2", 3, true];
type easyFirstArr4 = [true, "2", 3, true];
type easyFirstArr5 = [typeof easyFirstFun, "2", 3, true];
type easyFirstTest1 = MyEasyFirst<easyFirstArr1>; // expected to be 'a'
type easyFirstTest2 = MyEasyFirst<easyFirstArr2>; // expected to be 2
type easyFirstTest3 = MyEasyFirst<easyFirstArr3>; // expected to be false
type easyFirstTest4 = MyEasyFirst<easyFirstArr4>; // expected to be true
type easyFirstTest5 = MyEasyFirst<easyFirstArr5>; // expected to be () => number
type easyFirstTest7 = MyEasyFirst<["a", "2", 3, true]>; // expected to be 'a'
type easyFirstTest8 = MyEasyFirst<[() => number, "2", 3, true]>; // expected to be () => number
第一个元素
![#array](https://img.shields.io/badge/-%23array-999)
实现一个通用
First<T>
,它接受一个数组T
并返回它的第一个元素的类型。例如:
相关挑战