String to Union

Challenge

Implement the String to Union type. Type take string argument. The output should be a union of input letters

For example

type Test = "123";
type Result = StringToUnion<Test>; // expected to be "1" | "2" | "3"

Solution

Zur Lösung dieses Problems können wir wieder infer in konditionellen Typen nutzen, um ein Zeichen nach dem anderen aus der Zeichenkette zu extrahieren. Anschließend rufen wir den Typen einfach mit der jeweils verbleibenden Zeichenkette in einer Vereinigung auf:

type StringToUnion<T extends string> = T extends `${infer First}${infer Last}`
  ? First | StringToUnion<Last>
  : never;

References

Inferring Within Conditional Types