From 89a725f664a6984eb7a4e206ccf208e2c8d0cee6 Mon Sep 17 00:00:00 2001 From: MrSpoony Date: Thu, 9 Mar 2023 09:11:12 +0100 Subject: [PATCH] add string to number --- string-to-number.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 string-to-number.ts diff --git a/string-to-number.ts b/string-to-number.ts new file mode 100644 index 0000000..bc7ef04 --- /dev/null +++ b/string-to-number.ts @@ -0,0 +1,31 @@ +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