add is palindrome

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

@ -0,0 +1,32 @@
import type { Equal, Expect } from '@type-challenges/utils'
type casesPalindrome = [
Expect<Equal<IsPalindrome<'abc'>, false>>,
Expect<Equal<IsPalindrome<'b'>, true>>,
Expect<Equal<IsPalindrome<'abca'>, false>>,
Expect<Equal<IsPalindrome<'abcba'>, true>>,
Expect<Equal<IsPalindrome<121>, true>>,
Expect<Equal<IsPalindrome<19260817>, false>>,
]
type CheckPalindrome<
T extends string[]
> =
T extends [infer First, ...infer Mid, infer Last]
? First extends Last
? Mid extends string[] ? CheckPalindrome<Mid> : never
: false
: true
;
type ToArr<T extends string> = T extends `${infer Head}${infer Tail}` ? [Head, ...ToArr<Tail>] : [];
type IsPalindrome<
T extends string | number
> =
T extends number
? IsPalindrome<`${T}`>
: T extends string
? CheckPalindrome<ToArr<T>>
: never
Loading…
Cancel
Save