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;
infer A
に集約し返却。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