logoProsperBao

Trunc

2022-04-24 03

题目来源(type-challenges)

问题

实现一个类型 Math.trunc 接收一个字符串或者数字,返回整数部分

type case1 = Trunc<0.1> //  '0'
type case1 = Trunc<1.234> //  '1'
type case1 = Trunc<12.345> //  '12'
type case1 = Trunc<-5.1> //  '-5'
type case1 = Trunc<'1.234'> //  '1'
type case1 = Trunc<'-10.234'> //  '-10'
type case1 = Trunc<10> //  '10'

解答

type Trunc<T extends number | string> = `${T}` extends `${infer S}.${infer _}` ? S : `${T}`

拆分

  1. 先将 T 转换为字符串
  2. 再将字符串以小数点分割