Skip to main content

5140 - Trunc

Answer TestCases

实现 Math.trunc 的类型版本,该函数接受字符串或数字类型,并通过移除任意小数部分返回整数部分。

例如:

type A = Trunc<12.34> // 12

Solution

type Trunc<T extends string | number> = `${T}` extends `${infer L}.${infer _}`
? L extends '' | '-'
? `${L}0`
: L
: `${T}`

通过 infer 将字符串分为左右两部分

如果左边部分是空字符或者是 '-' 则返回 ${L}0, 否则直接返回 L

如果不能将字符串分为左右两部分, 说明字符串没有 ., 即整个字符串都是整数部分,直接返回整个字符串即可。