00016-medium-pop

Back

解决空数组不满足匹配条件的情况

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