본문 바로가기
Language/Typescript

타입챌린지 : 4179-Flip (medium)

by hsloth 2023. 9. 16.

이 글은 제가 타입챌린지를 하면서 해석한 내용을 적는 글입니다. 틀린 내용이 있으면 댓글 달아주시면 감사하겠습니다.

 

https://github.com/type-challenges/type-challenges/blob/main/questions/04179-medium-flip/README.md

 

 

key-value -> value-key로 객체의 key와 value의 위치를 바꾸는 타입이다.

 

type Flip<T> = {
  [P in keyof T as T[P] extends string | boolean | number | bigint | null | undefined ? `${T[P]}`: never]: P
}

일단... 굉장히 쉽다.

T[P]를 key로 바꾸기 위해 as문을 사용할 텐데, T[P]에서 T[P]의 타입이 string, boolean, number, bigint, null, undefined여야한다고 알려준다. 그래서 다음과 같이 조건을 걸면 된다.