# number 工具类型

在 CodeSandBox 中尝试 (opens new window)

# NumberLike 形如数字类型

形如数字的类型,如:0"0"0.1-1"-0.1""+1"

用于约束其他类型

type NumberLike = `${number}` | number

# IsZero 判断类型为 0

判断一个数字类型(或形如)是否为 0

如果是,则得到类型 true,否则得到类型 false

泛型参数

  • N
    • 约束 NumberLike
    • 必须

示例

import { number } from 'typescript-lodash'

type Result1 = number.IsZero<0> // true

type Result2 = number.IsZero<"0"> // true

type Result3 = number.IsZero<"0.0"> // false, 不能判断 "0.0" 的场景,但是数字类型的 0.0 和 -0 会得到 true 类型

# IsNotZero 判断类型不为 0

判断一个数字类型(或形如)是否不为 0

如果是,则得到类型 true,否则得到类型 false

泛型参数

  • N
    • 约束 NumberLike
    • 必须

示例

import { number } from 'typescript-lodash'

type Result1 = number.IsNotZero<0> // false

type Result2 = number.IsNotZero<"0"> // false

type Result3 = number.IsNotZero<0.1> // true

type Result4 = number.IsNotZero<-1> // true

# IsOverZero 判断类型大于 0

判断一个数字类型(或形如)是否大于 0

如果是,则得到类型 true,否则得到类型 false

泛型参数

  • N
    • 约束 NumberLike
    • 必须

示例

import { number } from 'typescript-lodash'

type Result1 = number.IsOverZero<0> // false

type Result2 = number.IsOverZero<-0.1> // false

type Result3 = number.IsOverZero<'1'> // true

type Result4 = number.IsOverZero<'+1'> // true

# IsLessZero 判断类型小于 0

判断一个数字类型(或形如)是否小于 0

如果是,则得到类型 true,否则得到类型 false

泛型参数

  • N
    • 约束 NumberLike
    • 必须

示例

import { number } from 'typescript-lodash'

type Result1 = number.IsLessZero<0> // false

type Result2 = number.IsLessZero<'1'> // false

type Result3 = number.IsLessZero<'+1'> // false

type Result3 = number.IsLessZero<'-1'> // true

# IsFloat 判断类型为浮点型

判断一个数字类型(或形如)是否为浮点型

如果是,则得到类型 true,否则得到类型 false

泛型参数

  • N

    • 约束 NumberLike
    • 必须
  • OnlyCheckPoint

    • 约束 boolean
    • 必须
    • 默认 true
    • 注:关闭后,如果小数位全是 0,则会得到 false

示例

import { number } from 'typescript-lodash'

type Result1 = number.IsFloat<0> // false

type Result2 = number.IsFloat<0.0> // false,数字类型 0.0 会得到 false,但字符类型 "0.0" 会得到 true

type Result3 = number.IsFloat<'1'> // false

type Result4 = number.IsFloat<1.1> // true

type Result5 = number.IsFloat<1.0, false> // false

type Result6 = number.IsFloat<1.0, true> // true

# IsInt 判断类型为整型

判断一个数字类型(或形如)是否为整型

如果是,则得到类型 true,否则得到类型 false

泛型参数

  • N

    • 约束 NumberLike
    • 必须
  • OnlyCheckPoint

    • 约束 boolean
    • 必须
    • 默认 true
    • 注:关闭后,如果小数位全是 0,则会得到 true

示例

import { number } from 'typescript-lodash'

type Result1 = number.IsInt<0> // true

type Result2 = number.IsInt<0.0> // true,数字类型 0.0 会得到 true,但字符类型 "0.0" 会得到 false

type Result3 = number.IsInt<'1'> // true

type Result4 = number.IsInt<1.1> // false

type Result5 = number.IsInt<1.0, false> // true

type Result6 = number.IsInt<1.0, true> // false

# IsEqual 判断数字类型相等

判断两个数字类型(或形如)是否相等

如果是,则得到类型 true,否则得到类型 false

泛型参数

  • L

    • 约束 NumberLike
    • 必须
    • 注:作为被约束的类型进行校验
  • R

    • 约束 NumberLike
    • 必须
    • 注:作为约束
  • Strict

    • 约束 boolean
    • 必须
    • 默认 true
    • 注:关闭后,形如数字类型和数字类型进行比较时,都转为字符串后相同,则会得到 true

示例

import { number } from 'typescript-lodash'

type Result1 = number.IsEqual<0, 0> // true

type Result2 = number.IsEqual<0, '0'> // false

type Result3 = number.IsEqual<0, '0', false> // true

type Result4 = number.IsEqual<0.1, '0.1', false> // true

# IsNotEqual 数字类型是否不相等

判断两个数字类型(或形如)是否不相等

如果是,则得到类型 true,否则得到类型 false

泛型参数

  • L

    • 约束 NumberLike
    • 必须
    • 注:作为被约束的类型进行校验
  • R

    • 约束 NumberLike
    • 必须
    • 注:作为约束
  • Strict

    • 约束 boolean
    • 必须
    • 默认 true
    • 注:关闭后,形如数字类型和数字类型进行比较时,都转为字符串后不相同,则会得到 true

示例

import { number } from 'typescript-lodash'

type Result1 = number.IsNotEqual<0, 0> // false

type Result2 = number.IsNotEqual<0, '0'> // true

type Result3 = number.IsNotEqual<0, '0', false> // false

type Result4 = number.IsNotEqual<0.1, 1> // true

# IntIncrease 数字类型自增

返回一个形如数字类型加一的整数类型结果

泛型参数

  • N
    • 约束 NumberLike
    • 必须

示例

import { number } from 'typescript-lodash'

type Result1 = number.IntIncrease<99> // 100

type Result2 = number.IntIncrease<0> // 1

# IntAddSimple 数字类型相加

两个数字类型相加,得到新的数字类型(两数的和)

注意

该数字类型相加工具类型有较为明显的边界限制

泛型参数

  • N1

    • 约束 number
    • 必须
    • 注:必须是大于等于0的整数,且不超过999
  • N2

    • 约束 number
    • 必须
    • 注:必须是大于等于0的整数,且不超过999

示例

import { number } from 'typescript-lodash'

type Result1 = number.IntAddSimple<1, 2> // 3

type Result2 = number.IntAddSimple<0, 1> // 1

# Compare 比较类型大小

两个数字类型比较大小

如果第一个数字类型大于第二个数字类型,则得到 true,否则得到 false

注意

该数字类型大小比较工具类型有较为明显的边界限制

泛型参数

  • N1

    • 约束 number
    • 必须
    • 注:必须是大于等于0的整数,且不超过999
  • N2

    • 约束 number
    • 必须
    • 注:必须是大于等于0的整数,且不超过999

示例

import { number } from 'typescript-lodash'

type Result1 = number.Compare<1, 1> // false

type Result2 = number.Compare<0, 1> // false

type Result3 = number.Compare<1, 0> // true

# IntMinusSingleAbs 数字类型相减

两个数字类型相减,得到差的绝对值

注意

该数字类型相减工具类型有较为明显的边界限制

泛型参数

  • N1

    • 约束 number
    • 必须
    • 注:必须是大于等于0的整数,且不超过999
  • N2

    • 约束 number
    • 必须
    • 注:必须是大于等于0的整数,且不超过999

示例

import { number } from 'typescript-lodash'

type Result1 = number.IntMinusSingleAbs<1, 1> // 0

type Result2 = number.IntMinusSingleAbs<0, 1> // 1

type Result3 = number.IntMinusSingleAbs<5, 1> // 4

# GetHalf 获取数字类型的一半

获得一个数字类型的一半

如果该数字类型 N 为偶数,则会得到 N / 2 的结果

如果该数字类型 N 为奇数,则会得到 (N + 1) / 2 的结果

注意

该数字类型获取一半工具类型有较为明显的边界限制

泛型参数

  • N
    • 约束 number
    • 必须
    • 注:为大于等于0的整数,且不超过1000

示例

import { number } from 'typescript-lodash'

type Result1 = number.GetHalf<0> // 0

type Result2 = number.GetHalf<1> // 1

type Result3 = number.GetHalf<2> // 1

type Result4 = number.GetHalf<4> // 2

# ToNumber 转为数字类型

将字符串类型(整数)转为数字类型

泛型参数

  • N
    • 约束 string
    • 必须
    • 注:需要为大于等于0的整数,最大可转换9999

示例

import { number } from 'typescript-lodash'

type Result1 = number.ToNumber<"123"> // 123

# ParseFloat 转为浮点型

将形如数字类型转为数字类型,支持浮点数

泛型参数

  • N
    • 约束 NumberLike
    • 必须
    • 注:可为正负数,整数或小数,包含小数点(不包含负号),输出结果最大支持17位,输入时,小数位末尾后可补0

示例

import { number } from 'typescript-lodash'

type Result1 = number.ParseFloat<"123"> // 123

type Result2 = number.ParseFloat<"123.45"> // 123.45

type Result3 = number.ParseFloat<"-3.14159265358979300000000000"> // -3.141592653589793

type Result4 = number.ParseFloat<123.45> // 123.45

type Result4 = number.ParseFloat<123.45000> // 123.45

# Add 大数相加

支持大数类型(字符串)相加,不会出现精度问题,结果类型为字符串类型

约束说明

AdvancedNumericCharacters 即小数点左边不能以多个 0 为开始,且为字符类型

type Numbers = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

type AdvancedNumericCharacters =
  | `${0}.${number}`
  | `${Exclude<Numbers, 0>}${number | ""}.${number}`
  | `${Exclude<Numbers, 0>}${Numbers | ""}.${number}`
  | `${Exclude<Numbers, 0>}${number}`
  | `${Numbers}`

泛型参数

  • S1

    • 约束 AdvancedNumericCharacters
    • 必须
  • S2

    • 约束 AdvancedNumericCharacters
    • 必须

示例

import { number } from 'typescript-lodash'

type Result1 = number.Add<"1", "1"> // 2

type Result1 = number.Add<"9007199254740991", "9007199254740991"> // "18014398509481982.0"

type Result2 = number.Add<"9007199254740991.12345", "9007199254740991.234567"> // "18014398509481982.357017"
最后更新时间: 12/6/2022, 4:26:59 AM