以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - TypeScript 类型谜题
41. implement FindIndex<T, E>
type FindIndex<T extends any[], E> = T extends [infer H, ...infer R] ? H extends E ? 0 : R extends any[] ? FindIndex<R, E> extends infer I ? I extends number ? I + 1 : never : never : never : never;type A = [any, never, 1, '2', true];type B = FindIndex<A, 1>; // 2type C = FindIndex<A, 3>; // never
这个FindIndex
实现使用了递归的方式,首先取出数组的第一个元素进行比较,如果匹配则返回索引0,如果不匹配则继续递归剩余的元素,如果剩余元素数组为空,则返回never
。如果递归调用返回一个数字,那么加上1作为最终索引值,否则返回never
。