diff --git a/is-palindrome.ts b/is-palindrome.ts new file mode 100644 index 0000000..10d06ad --- /dev/null +++ b/is-palindrome.ts @@ -0,0 +1,32 @@ +import type { Equal, Expect } from '@type-challenges/utils' + +type casesPalindrome = [ + Expect, false>>, + Expect, true>>, + Expect, false>>, + Expect, true>>, + Expect, true>>, + Expect, false>>, +] + +type CheckPalindrome< + T extends string[] +> = +T extends [infer First, ...infer Mid, infer Last] + ? First extends Last + ? Mid extends string[] ? CheckPalindrome : never + : false + : true +; + +type ToArr = T extends `${infer Head}${infer Tail}` ? [Head, ...ToArr] : []; + +type IsPalindrome< + T extends string | number +> = +T extends number + ? IsPalindrome<`${T}`> +: T extends string + ? CheckPalindrome> +: never +