Typescript 홀수 유형

대부분의 사람들: 아니요, Typescript로 홀수 유형을 만들 수 없습니다.

한편 나:

type OddNumber<
    X extends number,
    Y extends unknown[] = [1],
    Z extends number = never
> = Y['length'] extends X
    ? Z | Y['length']
    : OddNumber<X, [1, 1, ...Y], Z | Y['length']>

type a = OddNumber<1> // 1 
type b = OddNumber<3> // 1 | 3
type c = OddNumber<5> // 1 | 3 | 5
type d = OddNumber<7> // 1 | 3 | 5 | 7


playground

일부 제한 사항이 있지만 입력은 홀수여야 하며 1999를 초과할 수 없습니다(타이프 스크립트 재귀의 최대 깊이는 1000입니다).

유사한 논리를 사용하여 짝수 유형을 수행할 수 있습니다.

좋은 웹페이지 즐겨찾기