String Union Type을 활용할 때 이따금씩 가능한 타입의 값들을 코드 안에서 value로 활용하고 싶은 경우가 있다.
한 예시로 MBTI에 대한 String Union Type을 형성한 후 각각의 MBTI를 표현하는 MBTI를 생성하고 싶을 때는 map 함수를 활용하여 컴포넌트들을 사용하는 것이 매우 효율적이다.
가능한 방법은 두 가지가 있다. 두 가지 모두 type을 먼저 생성하는 것이 아니라 가능한 값들을 생성한 후 그로부터 타입을 추출하는 방법들이다.
1. 배열 활용
위 예시와 같이 가능한 값들의 배열을 생성한 후 'typeof 배열이름[number]'을 통해 그 값들을 가지는 타입을 생성할 수 있다. 배열에 변화가 없다는 as const를 덧붙여야지만 해당 값들로 타입을 생성할 수 있으니 주의해야 한다.
2. Object 활용
위 예시와 같이 이미 원하는 타입의 값들이 키로 담긴 Object가 있다면 그를 활용하는 것 역시 좋은 방법이다. (물론 언어 변환은 i18n을 활용하는 것이 적합하겠지만 예시이니까 넘어가자)
결론
원하는 타입값들을 키로 가지는 Object가 이미 있다면 2번 방법을 활용하고 그렇지 않다면 1번 방법을 활용하면 원하는 값들을 동시에 type과 value로 활용할 수 있다.
'프론트엔드 기본개념 복습 > Typescript' 카테고리의 다른 글
[React, Typescript] Could not find a declaration file for module 'react/jsx-runtime' (0) | 2022.03.03 |
---|---|
[Typescript] Mapped Types & Utility Types (0) | 2022.02.02 |
[Typescript] Type alias vs Interface (0) | 2022.02.02 |
[Typescript] Intersection Type (0) | 2022.01.31 |
[Typescript] never 타입 (0) | 2022.01.31 |