타입 챌린지 10969 - Integer

소파의 벨로그·2025년 5월 17일

타입챌린지

목록 보기
86/131

문제 링크

문제

T는 number를 상속하고, 만약 T가 정수라면 그것을 반환하고 그렇지 않다면 never를 반환하는 타입 Integer<T>을 완성하라

Please complete type Integer<T>, type T inherits from number, if T is an integer return it, otherwise return never.

내 풀이

type Integer<T extends number> =
  number extends T?never:
  `${T}` extends `${string}.${string}`?never:T

만약 T에 number 그 자체가 온다면 never를 반환한다.
만약 T를 문자열로 치환했을 때 .이 존재한다면 never를 반환한다.
두 경우가 모두 아닌 경우에 T를 반환한다.

다른 사람의 풀이

type Integer<T extends number> = `${T}` extends `${bigint}` ? T : never

풀이

매우 단순하게 bigint를 상속하는지 확인하는 함수이다.
T가 소수점, Infinity, NaNd이면 never로 들어가는 듯 하다.

관련 개념

참고자료

https://github.com/type-challenges/type-challenges/issues/18773

0개의 댓글