이 글은 제가 타입챌린지를 하면서 해석한 내용을 적는 글입니다. 틀린 내용이 있으면 댓글 달아주시면 감사하겠습니다.
GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge
Collection of TypeScript type challenges with online judge - GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge
github.com
문자열을 하나씩 쪼개서 유니온으로 만드는 타입이다.
아래 문제와 비슷하니 아래 문제도 참고해보자.
타입챌린지 : 10-Tuple To Union (medium)
이 글은 제가 타입챌린지를 하면서 해석한 내용을 적는 글입니다. 틀린 내용이 있으면 댓글 달아주시면 감사하겠습니다. https://github.com/type-challenges/type-challenges/blob/main/questions/00010-medium-tuple-to-un
suloth.tistory.com
이것도 지금까지 타입챌린지를 꾸준히 해온 사람이라면 금방 풀 수 있을 것 같다. 실제로 나도 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 |