TypeScript·

11 - Tuple to Object

  • #Type Challenges
  • #TypeScript

질문

배열(튜플)을 받아, 각 원소의 값을 key/value로 갖는 오브젝트 타입을 반환하는 타입을 구현하세요.

예시:

1
const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const
2
3
type result = TupleToObject<typeof tuple>
4
// expected { 'tesla': 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}
5
6

선행 지식

  1. as const

    1
    const tuple = ['tesla', 'model 3'] as const

    튜플의 길이와 순서가 고정되어 각 원소를 유니온 타입으로 추출 가능해진다.

  2. 배열의 원소 접근

    1
    type T = ['a', 'b', 'c']
    2
    type U = T[number] // 'a' | 'b' | 'c'

    배열의 원소는 [number]를 사용하여 꺼내올 수 있다. 이 때 모든 배열 요소의 유니온 타입으로 추출된다.

풀이