반응형
문제
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
을 다 처리하려고 하게 될지도 모른다
반응형
'✍ 공부 > TypeScript' 카테고리의 다른 글
[type-challenges] Merge (0) | 2023.06.27 |
---|---|
[type-challenges] String to Union (0) | 2023.06.27 |
[type-challenges] Append to object (0) | 2023.06.27 |
[type-challenges] Flatten (0) | 2023.06.26 |
[type-challenges] Length of String (0) | 2023.06.26 |