问题 #
实现一个类型的 Array.indexOf
,indexOf<T, U>
接收一个数组和一个值,返回数组中第一个值与给定值相等的元素的索引,如果没有找到则返回 -1
type case1 = IndexOf<[1, 2, 3], 2> // 1
type case2 = IndexOf<[2, 6, 3, 8, 4, 1, 7, 3, 9], 3> // 2
type case3 = IndexOf<[0, 0, 0], 2> // -1
解答 #
type IndexOf<T extends unknown[], U, Count extends unknown[] = []> =
T extends [infer F, ...infer R]
? F extends U
? Count['length']
: IndexOf<R, U, [...Count, 1]>
:-1
拆分 #
- 拆分数组
- 判断相等
- 递归判断
- 返回结果