H
: `${T}`
IndexOf
实现 IndexOf 寻找元素所在下标,找不到返回 -1:
type Res = IndexOf1, 2, 3], 2>; // expected to..., 2>; // expected to be -1
需要用一个辅助变量存储命中下标,递归的方式一个个判断是否匹配:
type IndexOf,原因是 1 extends number 结果为真,所以我们要换成 Equal 函数判断相等:
// 本题答案
type IndexOf<T, U, Index extends...F
: `${F}${U}${Join}`
: ''
唯一要注意的是处理到最后一项时,不要再追加 U 了,可以通过 R['length'] extends 0 来判断。...LastIndexOf
实现 LastIndexOf 寻找最后一个匹配的下标:
type Res1 = LastIndexOf1, 2, 3, 2, 1], 2> // 3
type Res2 =