type Last<T extends any[]> = T extends [...infer _, infer L] ? L : never
Solution by ChemieAi #36565
type Last<T extends any[]> = T extends [infer F, ...infer R]
? R extends [any, ...any]
? Last<R>
: F
: never;
Solution by josepderiu #36541
type Last<T extends any[]> = T extends [...any,infer P] ? P : never
Solution by tac-tac-go #36471
type Last<T extends any[]> = T extends [...infer Rest, infer L] ? L : never;
Solution by HtmlSeniorDev #36458
type Last<T extends any[]> = T extends [...infer K, infer L] ? L : never
Solution by gakki-san #36440
type Last<T extends any[]> = [never, ...T][T["length"]];
Solution by gakki-san #36439
type Last<T extends any[]> = T extends [...any[], infer L] ? L : never;
Solution by asylbekduldiev #36405
type Last<T extends any[]> = T extends [...infer R, infer F] ? F : never;
Solution by AleksandrShcherbackov #36163
// your answers
type Last<T extends any[]> = T extends [...infer rest, infer last] ? last : never
Solution by lishenli1994 #36158
// 递归
type Last<T extends any[]> =
T extends [infer First, ...infer Rest]
? Rest["length"] extends 0
? First
: Last<Rest>
: never;
Solution by qtycc-cc #35929
type Last<T extends any[]> = T['length'] extends 0 ? never : T extends [...any,infer U] ? U : 0;
Solution by tac-tac-go #35866
type Last<T extends any[]> = T extends [...infer _,infer Last] ? Last : never
Solution by EvilEl #35840
// 你的答案
// 基于Typescript 4.0.5
type Last<T extends any[]> = T extends [infer F, ...infer R]
? R["length"] extends 0
? F
: [F, ...T][T["length"]]
: never
Solution by a42195472 #35593
type Last<T extends any[]> = T extends [...any, infer L] ? L : never;
Solution by gangnamssal #35555
type Last<T extends any[]> = T extends [...infer A,infer U] ? U : never
Solution by TaueFenCheng #35534
type Last<T extends unknown[]> = T extends [...arg: unknown[], v:infer V] ? V : never
Solution by RanungPark #35481
// your answers
type arrOne = ["a", "b", "c"];
type arrTwo = [3, 2, 1];
type Last<T extends unknown[]> = T extends [...infer Pending, infer L] ? L : never;
const tail1: Last<arrOne> = "c";
const tail2: Last<arrTwo> = 1;
Solution by Sathiyapramod #35452
type Last<T extends any[]> = T extends [...infer Rest, infer Last] ? Last : never
Solution by eunsukimme #35122
type Last<T extends any[]> = T extends [...infer Rest, infer LastElement] ? LastElement : never
Solution by 2njeong #35081
// your answers
Solution by 2njeong #35080
type Last<T extends any[]> = T extends [...any[], infer L] ? L : never;
Solution by raeyoung-kim #35000
type Last<T extends any[]> = T extends [...any[], infer L] ? L : never;
Solution by 56aiden90 #34955
type Last<T extends any[]> = T extends [infer A, ...infer Rest]
? Rest extends [infer B, ...infer Rest2]
? Last
我这个方法可能不是最好的,但是如果是type Last<T extends any[]> = T extends [...any, infer L] ? L : T这样的,在实际运行代码层面又是不合理的,type Last<T extends any[]> = [any, ...T][T["length"]];又不好理解,所以我还是采用最原始的做法。
Solution by shx123qwe #34916
type Last<T extends unknown[]> = T extends [infer Last]
? Last
: T extends [infer _, ...infer Rest]
? Last<Rest>
: never;
Solution by SayaOvO #34823
// your answers
type Last<T extends any[]> = T extends [...any, infer L] ? L : never;
Solution by zeyuanHong0 #34796
type Last<T extends any[]> = T extends [...any[], infer M] ? M : never;
Solution by nathan2slime #34656
type Last<T extends unknown[]> = [never, ...T][T["length"]];
// or
type Last<T extends unknown[]> = T extends [... infer Head, infer Tail] ? Tail : never
Solution by binhdv155127 #34633
type Last<T extends any[]> = T['length'] extends 0 ? never : [any, ...T][T['length']]
// your answers
Solution by Rustamaha #34599
type Last<T extends any[]> = T['length'] extends 1
? T[0]
: T extends [infer I, ...infer R] ? Last<R> : never
// your answers
Solution by Rustamaha #34598
type Last<T extends any[]> = T extends [...infer rest, infer F] ? F : never
Solution by Hailey0930 #34569