이 글은 제가 타입챌린지를 하면서 해석한 내용을 적는 글입니다. 틀린 내용이 있으면 댓글 달아주시면 감사하겠습니다.
문자열을 하나씩 쪼개서 유니온으로 만드는 타입이다.
아래 문제와 비슷하니 아래 문제도 참고해보자.
이것도 지금까지 타입챌린지를 꾸준히 해온 사람이라면 금방 풀 수 있을 것 같다. 실제로 나도 5분도 안걸린 것 같다.
type StringToUnion<T extends string> = T extends `${infer F}${infer O}` ?
F | StringToUnion<O> : never;
T extends `${infer F}${infer O}` ? : 만약 T가 하나의 문자 F와 나머지 문자열 O로 나뉘어 진다면 (우리는 infer F, infer O로 문자열을 나눈다면 F에는 문자 하나만 들어간다는 것을 알고 있다! 만약 몰랐다면, 기억하자!)
F | StringToUnion<O> : never; : F | StringToUnion<O>를 리턴한다. StringToUnion<O>를 타면, 재귀하면서 유니온을 하나씩 늘려간다. 만약 문자열이 없다면, never를 리턴한다. (문자열이 하나만 있어도 ${infer F}${infer O}를 extends하는걸로 취급된다)
'Language > Typescript' 카테고리의 다른 글
타입챌린지 : 612-KebabCase (medium) (0) | 2023.04.16 |
---|---|
타입챌린지 : 599-Merge (medium) (2) | 2023.04.15 |
타입챌린지 : 529-Absolute (medium) (0) | 2023.04.10 |
타입챌린지 : 527-Append to object (medium) (0) | 2023.04.07 |
타입챌린지 : 459-Flatten (medium) (0) | 2023.04.06 |