add string to number

main
Kimi Löffel 3 years ago
parent 148867f294
commit 89a725f664

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