타입 챌린지 3192 - Reverse

소파의 벨로그·2025년 4월 16일

타입챌린지

목록 보기
56/131

문제 링크

문제

Array.reverse의 타입 버전을 구현하라

Implement the type version of Array.reverse

내 풀이

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

귀납의 마지막 경우 빈 배열,
귀납의 마지막 이전의 경우 [첫 번째 타입],
귀납의 두 번째 마지막 이전의 경우 [두 번째 타입,첫 번째 타입],
...
귀납의 두 번째 경우 [뒤에서 두 번째 타입,...,두 번째 타입,첫 번째 타입],
귀납의 첫 번째 경우 [뒤에서 첫 번째 타입,뒤에서 두 번째 타입,...,두 번째 타입,첫 번째 타입]이 된다.

그래서 이와 같은 풀이가 가능하다

다른 사람의 풀이

type Reverse<T extends readonly any[], Result extends readonly any[] = []> =
  T extends [infer A, ...infer B]
    ? Reverse<B, [A, ...Result]>
    : Result

보조 제네릭을 사용하는 경우가 있었다.

참고자료

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

0개의 댓글