以下为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