import type { Equal, Expect } from '@type-challenges/utils' type cases = [ Expect, 0>>, Expect, 5>>, Expect, 12>>, Expect, 27>>, Expect, never>>, ] type Digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'; type IsNumber< S extends string, > = S extends `${Digit}${infer Tail}` ? IsNumber : S extends '' ? true : false ; type ToNumber< S extends string, Acc extends 1[] = [] > = IsNumber extends true ? `${Acc['length']}` extends S ? Acc['length'] : ToNumber : never