Open utterances-bot opened 1 year ago
I solved this similarly, but in a recursive manner
type PercentageParser<
A extends string,
Acc extends string[] = ["", "", ""]
> = A extends `${infer Sign extends "+" | "-"}${infer Rest}`
? PercentageParser<Rest, [Sign, "", ""]>
: A extends `${infer Rest}%`
? PercentageParser<Rest, [Acc[0], '', "%"]>
: [Acc[0], A, Acc[2]];
type NumParser<T extends string> = T extends `${infer N}%`
? [N, '%'] : [T, ''];
type PercentageParser<T extends string> = T extends `${infer PM}${infer Rest}`
? PM extends '+' | '-'
? [PM, ...NumParser<Rest>] : ['', ...NumParser<T>]
: ['', '', ''];
Percentage Parser
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-percentage-parser.html