✍ 공부/TypeScript

[type-challenges] Absolute

Po_tta_tt0 2023. 6. 27. 08:00
반응형

문제

number, string 혹은 bigint를 받는 Absolute 타입을 만드시오

output은 양의 정수 string입니다

설명

/* _____________ Your Code Here _____________ */

type Absolute<T extends number | string | bigint> = `${T}` extends `${'-'}${infer P}`? P :`${T}`

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

type t = Absolute<-1_000_000n>

type cases = [
  Expect<Equal<Absolute<0>, '0'>>,
  Expect<Equal<Absolute<-0>, '0'>>,
  Expect<Equal<Absolute<10>, '10'>>,
  Expect<Equal<Absolute<-5>, '5'>>,
  Expect<Equal<Absolute<'0'>, '0'>>,
  Expect<Equal<Absolute<'-0'>, '0'>>,
  Expect<Equal<Absolute<'10'>, '10'>>,
  Expect<Equal<Absolute<'-5'>, '5'>>,
  Expect<Equal<Absolute<-1_000_000n>, '1000000'>>,
  Expect<Equal<Absolute<9_999n>, '9999'>>,
]

Expect<Equal<Absolute<-1_000_000n>, '1000000'>>,
이게 어려웠다

type Absolute<T extends number | string | bigint> = T
이렇게만 해도 언더바는 사라지고

type Absolute<T extends number | string | bigint> =${T}
이렇게 하면 n도 사라진다 맨 끝에 n을 붙히는게 bigint라서 사라지는 것 같다
이런 이해가 없으면 나처럼 -, _, n 을 다 처리하려고 하게 될지도 모른다

반응형