Gitsunmin

TIL

TIL
(=Today I Learned)

Create utility type Reverse

type Reverse<Tuple> = Tuple extends [infer Head, ...infer Rest]
       ? [...Reverse<Rest>, Head] : [];

const test: Reverse<[1,2,3,4]> = [4,3,2,1];
// test: [4,3,2,1]
  • Generic으로 받은 Tuple을 첫 번째 인덱스 요소인 Head와 나머지 요소인 Rest로 분리.
  • [1,2,3,4]
  • Head: 1, Rest: 2,3,4
  • Rest를 다시 재귀 호출
  • Head: 2, Rest: 3,4
  • Head: 3, Rest: 4
  • Head: 4, Rest:
  • [4,3,2,1]

이러한 식으로 호출이 되어집니다. 그러므로 test의 type은 [4,3,2,1]이 되고 기존의 값의 순서가 변경된 것을 알 수 있습니다.