[Typescript] 152 Medium - IsOdd

return true is a number is odd

/* _____________ Your Code Here _____________ */

type LastChar<T extends string> =  T extends `${infer First}${infer Rest}` 
    ? Rest extends ""
      ? First
      : LastChar<Rest>
    : never;
type IsOdd<T extends number> = `${T}` extends `${infer _}.${infer __}` 
  ? false 
  :`${T}` extends `${infer _}e${infer __}` 
    ? false
    : LastChar<`${T}`> extends '1' | '3' | '5' | '7' | '9' 
      ? true 
      : false; 

/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'

type cases = [
  Expect<Equal<IsOdd<5>, true>>,
  Expect<Equal<IsOdd<2023>, true>>,
  Expect<Equal<IsOdd<1453>, true>>,
  Expect<Equal<IsOdd<1926>, false>>,
  Expect<Equal<IsOdd<2.3>, false>>,
  Expect<Equal<IsOdd<3e23>, false>>,
  Expect<Equal<IsOdd<number>, false>>,
]

 

posted @ 2024-05-15 03:28  Zhentiw  阅读(2)  评论(0编辑  收藏  举报