타입 챌린지 16 - Pop

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

타입챌린지

목록 보기
20/131

문제 링크

문제

배열 T를 사용해 마지막 요소를 제외한 배열을 반환하는 제네릭 Pop<T>를 구현합니다.

내 풀이

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

Last of Array처럼 number[]와 같은 값이 들어올 때를 대비해서 이런 코드를 작성했다

해당 반례는 다음과 같다

Expect<Equal<number[],number[]>>

다른 사람의 풀이

```tsx
type Pop<T extends any[]> = T extends [...infer I, infer _] ? I : never

추천 풀이도 내 풀이에서 number를 대응한 부분 이전까지와 비슷했다.

찾아보니 마지막 infer _ 대신 unknown을 쓰는 경우도 있었다. 이 부분이 신기했다.

참고자료

https://github.com/type-challenges/type-challenges/issues/37

0개의 댓글