数字工具 (Number Utils)
提供了基础的数值处理工具,用于处理数值范围限制和区间判断,简化边界条件的逻辑编写。
为什么使用
在处理用户输入(如表单年龄、数量)、UI 交互(如滑块、进度条)时,经常需要对数值进行合法性校验或强制修正。手动编写 Math.min/max 组合或 if 判断不仅繁琐,而且容易出错。
优点
- 边界安全:
clamp确保数值永远不会越界。 - 智能区间:
inRange自动处理起始值和结束值的大小关系(无需关心start < end)。 - 语义清晰:相比原生的
if (x >= min && x < max),使用inRange代码意图更明确。
使用场景
- 表单修正:限制用户输入的百分比在 0-100 之间(
clamp)。 - 进度条控制:确保计算出的进度值不小于 0 且不大于总长度(
clamp)。 - 命中检测:判断鼠标点击位置是否在某个区域内(
inRange)。 - 数据过滤:筛选出价格在指定区间内的商品(
inRange)。
使用方式
导入
ts
import { clamp, inRange } from '@quiteer/utils'代码示例
ts
// 1. 范围限制(场景:透明度设置)
const opacity = 1.5
const safeOpacity = clamp(opacity, 0, 1) // => 1
// 2. 区间判断(场景:判断成绩等级)
const score = 85
if (inRange(score, 60, 100)) {
console.log('Pass')
}
// 3. 智能区间(无需关心参数顺序)
inRange(5, 10, 0) // => true (自动处理为 [0, 10))API 列表
clamp(n: number, min: number, max: number): number
限制数值范围。将数值限制在闭区间 [min, max] 内。
- n: 待限制的数值。
- min: 下界。
- max: 上界。
- Returns: 若
n < min返回min;若n > max返回max;否则返回n。
inRange(n: number, start: number, end: number): boolean
是否在范围内。判断数值是否落在半开区间 [start, end) 内(包含 start,不包含 end)。
- start: 起始边界。
- end: 结束边界。
- Note: 内部会自动处理
start和end的大小关系,取较小值为下界,较大值为上界。