По идее, надо реверснуть строку и сравнить с исходной) Это реально
type IsPalindrome<Str extends string> = Join<Split<Str>> extends Str ? true : false; type Split< Str extends string, Res extends string[] = [] > = Str extends '' ? Res : Str extends `${infer F}${infer Word}` ? Split<Word, [F, ...Res]> : never type Join< Arr extends string[], Res extends string = '' > = Arr extends [] ? Res : Arr extends [infer F extends string, ...infer Rest] ? Rest extends string[] ? Join<Rest, `${Res}${F}`> : never : never function isPalindrome<Str extends string>(str: Str) { return (str === str.split('').reverse().join('')) as IsPalindrome<Str> } const t = isPalindrome('tenet'); const f = isPalindrome('hello');
Не совсем то, что искал. Но спасибо. Я думаю лучше остаться на автотипах, где это просто булеан
Обсуждают сегодня