00016-medium-pop

Back

type Pop<T extends any[]> = T['length'] extends 0 ? [] : T extends [...infer P, infer L] ? (L extends never ? [] : P) : never;

Solution by nupthale #33582

// 你的答案
type Pop<T extends any[]> = T extends [] ? [] : T extends [...infer F, infer L] ? F : never

Solution by shaobeichen #33375

type Pop<T extends any[]> = T extends [] ? [] 
      : T extends [...infer R, infer L] ? R : never

Solution by naoxin20040419 #33364

type Pop<T extends any[]> = T extends [...infer P, unknown] ? P : []

Solution by loevray #33260

type Pop<T extends Array<any>> = T extends [...infer R, any] ? R : never; 
type push<T extends any[],K> = [...T,K];
type shift<T> = T extends [any,...infer R] ? R : never; 
type unshift<T extends any[],R extends any[]|string|number> = R extends Array<any> ?[ ...R ,...T] : [R,...T];

Solution by fffqwhy #32955

type Pop<T extends any[]> = T extends [...infer R, infer _] ? [...R] : [];

type Push<T extends any[], V> = [...T, V];
type Shift<T extends any[]> = T extends [infer _, ...infer R] ? R : never;
type Unshift<T extends any[], V> = [V, ...T];

Solution by juffyduan #32946

// 你的答案
type Pop<T extends any[],R extends any[] = []> = T extends [infer F,...infer O] ? O extends [] ? R : Pop<O,[...R,F]>
:[]

Solution by walker-hzx #32936

type Pop<T extends any[]> = T extends [...infer S, infer U] ? S : never;

Solution by CAN1177 #32869

// 解答をここに記入
type Pop<T extends any[]> = T extends []
  ? []
  : T extends [...infer A, any]
    ? [...A]
    : never;

Solution by Yasunori-aloha #32825

type Pop<T extends any[]> = T['length'] extends 0 ? [] : T extends [...infer F, infer L] ? F : never;

Solution by ZhipengYang0605 #32799

type Pop<T> = T extends [...infer R , infer _] ? [...R] : []; 

Solution by malyanoff #32780

type Pop<T extends unknown[]> = T extends [...infer Prev, infer Last] ? Prev : never

type arr1 = ['a', 'b', 'c', 'd']
type arr2 = [3, 2, 1]

type re1 = Pop<arr1> // expected to be ['a', 'b', 'c']
type re2 = Pop<arr2> // expected to be [3, 2]

Solution by ZhulinskiiDanil #32672

// 你的答案
T extends [...infer U, infer P] ? U : T extends [] ? [] : never;

Solution by DOIT008 #32528

type Pop<T extends any[]> = T extends [...infer U, any] ? U : never

Solution by laqudee #32347

type Pop<T extends unknown[]> = T extends [...infer V, unknown] ? V : [];

Solution by dev-hobin #32230

type Pop<T extends any[]> =
  T extends [...infer R, any]
  ? R
  : T

We verify if T extends from an array with at least one element (the last element). If it does, then we type as the rest of inferred elements, otherwise we type as T

Solution by joyanedel #32153

// your answers
type Pop<T extends any[]> = T extends [...infer Remains, any] ? Remains : []

Solution by trinhvinhtruong96 #32068

type Pop<T extends unknown[]> = T extends [...infer L, infer R] ? L : never;

Solution by rkamely #32056

type Pop<T extends any[]> = T extends [...infer A, infer L] ? A : [];

Solution by Tap-Kim #31992

// your answers
type Pop<T extends unknown[]> = T extends [...infer L, unknown]? L : [];

Solution by pea-sys #31879

type arr1 = ['a', 'b', 'c', 'd']
type arr2 = [3, 2, 1]

type re1 = Pop<arr1> // expected to be ['a', 'b', 'c']
type re2 = Pop<arr2> // expected to be [3, 2]

type Pop<T extends unknown[]> = T extends [...infer U, unknown] ? U : never

Solution by anovicenko74 #31770

type Pop<T extends any[]> = T extends [...infer Rest, any] ? Rest : []

Solution by kai-phan #31622

type Pop<T extends any[]> = T extends [...infer P, any] ? P : [];

Solution by Eric-ui555 #31574

// your answers

type Pop<T extends unknown[]> = T extends [...infer R, infer _] ? R : never;

Solution by AhmedRagabKamal #31490

type Pop<T extends any[]> = T extends [...infer Rest, any] ? [...Rest] : never;
type Unshift<T extends any[]> = T extends [any, ...infer Rest] ? [...Rest] : never;
type Push<T extends any[], K> = [...T, K];
type Shift<T extends any[], K> = [K, ...T];

Solution by jinyoung234 #31480

type Pop<T extends any[]> = T extends [...infer Values, any] ? Values : T;
type Shift<T extends any[]> = T extends [any, ...infer Values] ? Values : T;
type Push<T extends any[], V> = [...T, V];
type Unshift<T extends any[], V> = [V, ...T];

Solution by LcsGa #31426

// 你的答案

type Pop<T extends any[]> = T extends [] ? [] : T extends [...infer A, infer B] ? A : never

Solution by hytql8 #31347

// your answers
type Pop<T extends any[]> = T extends [] ? T : T extends [...infer R, unknown] ? R : never;

Solution by wzc520pyfm #31280

type Pop<T extends any[]> = T extends [...infer J, infer _] ? J : T;

Solution by vipulpathak113 #31262

type Pop<T extends any[]> = T extends [...infer U, unknown] ? U : []

Solution by changchanghwang #31224