Open utterances-bot opened 1 year ago
Here is my solution without String2Union
, welcome disscussion and improvement :)
code snippet:
type Head<T extends string> = T extends `${infer First}${any}` ? First : never
type AllCombinations<S extends string, C extends string = ''> =
S extends '' ? '' :
C extends ''
? AllCombinations<S, Head<S>>
: S extends `${infer Left}${C}${infer Right}`
? AllCombinations<`${Left}${Right}`>
| `${C}${AllCombinations<`${Left}${Right}`>}`
| AllCombinations<S, Head<Right>>
: never
AllCombinations
This project is aimed at helping you better understand how the type system works, writing your own utilities, or just having fun with the challenges.
https://ghaiklor.github.io/type-challenges-solutions/en/medium-nomiwase.html