以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - TypeScript 类型谜题
31. implement Push<T, I>
type Push<T extends any[], I> = [...T, I] extends infer R ? { [K in keyof R]: K extends keyof T ? R[K] : never } : never;type A = Push<[1,2,3], 4> // [1, 2, 3, 4]type B = Push<[1], 2> // [1, 2]type C = Push<[], string> // [string]
注:
Push
类型接受两个参数:T
类型是某个数组类型,I
类型是要被添加进数组中的元素的类型。
该类型通过使用 infer R
来获取添加了元素 I
后的新数组类型,然后将新数组类型中索引为 keyof R
的部分继承到最终返回的类型中,以确保只返回新添加的部分。