타입 챌린지 15 - Last of Array

소파의 벨로그·2025년 3월 10일

타입챌린지

목록 보기
19/131

문제 링크

문제

배열 T를 사용하고 마지막 요소를 반환하는 제네릭 Last<T>를 구현합니다.

내 풀이

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

다른 사람의 풀이

type Last<T extends any[]> = [any, ...T][T["length"]];

length를 활용한 풀이도 있었다.
T에는 length-1개의 요소가 있으므로 [any, ...T]length 인덱스의 값을 가져오는 방식이다.

이 방식은 첫 번째 예시인 Last<[]>를 충족시키지 못하므로, 첫 요소를 never로 바꿔야 한다

또, 내 방식과는 다른 점이 하나 더 있는데
number[]Last에 넣게 되면 내 정의는 never를, 위 정의는 number를 반환한다.

최종 변경

그러므로 `

type Last<T extends any[]> = [never, ...T][T["length"]];

가 가장 잘 어울리는 듯 하다

0개의 댓글