Absolute
约 252 字小于 1 分钟
2026-02-11
题目
实现一个接收string,number或bigInt类型参数的Absolute类型,返回一个正数字符串。
例如
type Test = -100
type Result = Absolute<Test> // expected to be "100"解题思路
利用模板字符串会把数字转成十进制字符串的原理,匹配第一个字符是否为 -,取其数字部分即可。
答案
type Absolute<T extends number | string | bigint> = `${T}` extends `${infer F}${infer R}`
? (F extends '-' ? R : `${F}${R}`)
: ''验证
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'>>,
]