00015-medium-last

Back

// type Last<T extends PropertyKey[]> = T extends [...any, infer S] ? S : never
// type Last<T extends PropertyKey[]> = [any, ...T][T['length']]
type Last<T extends PropertyKey[]> = T extends [...infer _, infer S] ? S : never

Solution by LdddLi #37535

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

Solution by Nakamura25257 #37465

type Last<T extends any[]> = T extends [...infer _, infer L] ? L : never;

/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'

type cases = [
  Expect<Equal<Last<[]>, never>>,
  Expect<Equal<Last<[2]>, 2>>,
  Expect<Equal<Last<[3, 2, 1]>, 1>>,
  Expect<Equal<Last<[() => 123, { a: string }]>, { a: string }>>,
]

Solution by AnastasiaSv #37417

// your answers
type Last<T extends any[]> = T extends [...any[], infer L] ? L : never;

Solution by webMasterMrBin #37366

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

Solution by Barrenboat #37272

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

Solution by Divcutu #37258

我这才是正常人的写法

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

Solution by djdidi #37147

type Last<T extends any[]> = T['length'] extends 0 ? never : T extends [infer F, ...infer R] ? R['length'] extends 0 ? F : Last<R> : T

Solution by 359Steve #37030

type Last<T extends any[]> = T['length'] extends 0 ? never : T extends [infer F, ...infer R] ? R['length'] extends 0 ? F : Last<R> : T

Solution by 359Steve #37029

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

Solution by zabavnikov #36987

type Last<T extends readonly any[]> = T['length'] extends never ? never : T extends [...any[],infer R] ? R : never

Solution by Lhy-study #36948

// your answers
type Last<T extends any[]> = T extends [...infer _, infer L] ? L : never;

Solution by AlexBraunMagic #36904

type Last<T extends any[]> = T extends [infer F, ...infer R] ? T[R['length']] : never;

Solution by duynhanf #36778

// 여기 풀이를 입력하세요
type Last<T extends any[]> = T['length'] extends 0 ? never : [any, ...T][T['length']]
type Last<T extends any[]> = T extends [...infer U, infer T] ? T : never

Solution by seungdeok #36736

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

Solution by tungulin #36727

// your answers

type Last<T extends any[]> = T extends [infer First,...infer Rest] ? [...Rest]['length'] extends 0 ? First: Last<[...Rest]>: never

Suggestions are welcomed 🎉

Solution by SubramaniyanTN #36677

// 你的答案

type Last<T extends any[]> = T['length'] extends 0 ? never: T extends [...arg:any, infer R]?R:never;

Solution by zhaohuaishuai #36645

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

Solution by tungulin #36611

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