문자열 인수를 입력받는 String to Union 유형을 구현하세요. 출력은 입력 문자열의 Union type이어야 합니다.
type StringToUnion<T extends string> =
T extends `${infer Start extends string}${infer Last}`?
Start|StringToUnion<Last>
:never
type StringToUnion<T extends string, R extends string[] = []>
= T extends `${infer First}${infer Rest}`
? StringToUnion<Rest, [...R, First]>
: R[number]
튜플타입으로 변환하는 풀이이다
그러나 이 방식은 사용처에서 쓸데없는 제네릭이 노출되므로 별로 선호하는 방식은 아니다.
https://github.com/type-challenges/type-challenges/issues/1304