解决空数组不满足匹配条件的情况
Expect<Equal<Pop<[]>, []>>
type Pop<T extends any[]> = T extends []
? []
: T extends [...infer R, infer _]
? R
: never
Solution by hayden-fr #37295
type Pop<T extends any[]> = T extends [ ...infer I, infer _ ] ? [ ...I ] : []
Solution by drunksweet #37271
type Pop<T extends Array<unknown>> = T extends [...infer R, infer L] ? R : never
Solution by Divcutu #37259
type Pop<T extends any[]> = T extends [...infer U, infer _] ? U : T;
或者最后一项使用 unknown
代替
type Pop<T extends any[]> = T extends [...infer U, unknown] ? U : T;
Solution by djdidi #37148
type Pop<T extends any[]> = T extends [...infer F, infer R] ? F : []
Solution by 359Steve #37031
type Pop<T extends any[]> = T extends []?T:T extends [...infer Rest,infer Last]?Rest:T
Solution by Zhangzhangks #37022
// your answers
type Pop<T extends any[]> = T extends [...infer All, infer _] ? All : [];
Solution by AlexBraunMagic #36903
type Pop<T extends any[]> = T extends [...infer R, any] ? R : [];
Solution by Da-Sheng #36895
// 여기 풀이를 입력하세요
type Pop<T extends any[]> = T extends [...infer R, any] ? R : T extends [] ? T : never
Solution by seungdeok #36748
type Pop<T extends any[]> = T extends [] ? [] : T extends [...infer L, infer A] ? L : never
Solution by tungulin #36728
// your answers
type Pop<T extends any[] , ResultArray extends any[] =[]> = T['length'] extends 0 ? T : T extends [infer First,...infer Rest] ? [...Rest]['length'] extends 1 ? [...ResultArray,First] : Pop<[...Rest],[...ResultArray,First]> : never
Suggestions are welcomed🎉 🎉 🎉
Solution by SubramaniyanTN #36678
type Pop<T extends unknown[]> = T extends [...infer U, unknown] ? U : never
Solution by ChuSeongJun #36666
// 你的答案
type Pop<T extends any[]> = T extends [...infer R ,_:infer Last] ? R : []
Solution by zhaohuaishuai #36646
type Pop<T extends any[]> = T extends [...infer Rest, any] ? Rest : never
type Shift<T extends any[]> = T extends [any, ...infer Rest] ? Rest : never
type Push<T extends any[], U> = [...T, U]
type Unshift<T extends any[], U> = [U, ...T]
Solution by ChemieAi #36566
type Pop<T extends any[]> = T extends [... infer P,infer L] ? P : []
Solution by tac-tac-go #36451
type Pop<T extends any[]> = T extends [...infer R,infer U] ? R : [];
Solution by gakki-san #36444
type Pop<T extends any[]> = T extends [...infer Rest, any] ? Rest : never
Solution by asylbekduldiev #36426
type Pop<T extends any[]> = T extends [...infer R, infer _] ? R : [];
Solution by AleksandrShcherbackov #36164
type Pop<T extends any[]> = T extends [...infer I, infer _] ? I : []
type Shift<T extends any[]> = T extends [infer First, ...infer _] ? First : never
type Push<T extends any[],J extends any> = [...T,J]
type UnShift<T extends any[],J extends any> = [J,...T]
Solution by EvilEl #35841
type Pop<T extends any[]> = T extends [...infer S, any] ? S : [];
Solution by TroyB95 #35747
type Pop<T extends any[]> = T extends [...infer F, unknown] ? F : [];
Solution by gangnamssal #35556
type Pop<T extends unknown[]> = T extends [...infer U, unknown] ? U : [];
Solution by RanungPark #35482
// your answers
type arrThree = ["a", "b", "c", "d"];
type arrFour = [3, 2, 1];
type Pop<T extends unknown[]> = T extends [...infer Pending, infer Last] ? Pending : never;
const re1: Pop<arrThree> = ["a", "b", "c"]; // expected to be ['a', 'b', 'c']
const re2: Pop<arrFour> = [3, 2]; // expected to be [3, 2]
Solution by Sathiyapramod #35455
type Pop<T extends any[]> = T extends []
? []
: T extends [...infer Rest, any]
? Rest
: never
Solution by eunsukimme #35123
type Pop<T extends any[]> = T extends [...infer F, infer L] ? [...F] : never;
Solution by raeyoung-kim #35001
type Pop<T extends any[]> = T extends never[] ? [] : T extends [...infer R, any] ? R: never
Solution by 56aiden90 #34956
// your answers
type Pop<T extends any[]> = T extends [...infer P, any] ? P : T;
Solution by zeyuanHong0 #34803
type Pop<T extends any[]> = T extends [...infer R, infer _] ? R : []
Solution by YBFJ #34682
type Pop<T extends any[]> = T extends [...infer A,infer B] ? [...A] : []
Solution by devshinthant #34566
type Pop<T extends unknown[]> = T extends [] ? [] : (T extends [...infer P, infer R] ? P : never);
对于[]的情况需要进行特殊判定,尝试过多种解决方案,不加[]做特殊判定的分支情况下,在泛型中采用any[]和unknown[]都无法通过。
Solution by wxh-cyber #34490