跳到主要内容

utils

Classes

ClassDescription
AsyncQueueExecutor异步任务执行器 支持并发控制和动态任务调度
EventDispatcher事件调度器 提供类型安全的事件添加、移除和分发功能
IdleTimer浏览器空闲检测
LeaderElection基于 Web Locks API 的 Leader Election 实现 用于在多个浏览器 tab/window 之间选举唯一的 leader

Interfaces

InterfaceDescription
BroadcastTopic-
ErrorResult错误结果接口,包含失败时返回的错误信息
EventMap事件映射接口 定义事件名称到事件数据的映射关系
IEventDispatcher-
SuccessResult成功结果接口,包含成功时返回的数据

Type Aliases

Type AliasDescription
AnyFunction通用函数类型,可接受任意参数并返回任意类型 用于需要表示各种函数类型的场景,提供最大的灵活性
DeepPartial创建一个类型的深度部分类型 所有属性(包括嵌套对象和数组元素的属性)都变为可选
EventListener事件监听器类型
MSTime-
Result结果返回类型,要么是成功结果,要么是错误结果,两者互斥 使用 XOR 类型确保结果对象要么有 data 属性,要么有 error 属性,不能同时存在

Variables

VariableDescription
BASE_62_DIGITS分数索引(Fractional Indexing)实现 基于 https://github.com/rocicorp/fractional-indexing
IMAGE_MIN_BASE64_BLACK最小的黑色图片Base64编码 1x1像素的黑色GIF图片,用于占位符或默认图片
IMAGE_MIN_BASE64_TRANSPARENT最小的透明图片Base64编码 1x1像素的透明GIF图片,用于占位符或默认图片
IS_BROWSER检测当前运行环境是否为浏览器环境 通过检查全局 window 对象是否存在来判断
isArray检查值是否为数组 这是对JavaScript内置Array.isArray函数的重导出
pool-

Functions

FunctionDescription
aesDecrypt使用 AES-GCM 算法解密数据
aesEncryptAES 加密
base64Decodebase64 解码
base64Encodebase64 编码
camelCase将字符串转换为驼峰命名格式 驼峰命名规则:首字母小写,后续每个单词首字母大写,单词间无分隔符 支持处理包含连字符(-)、下划线(_)、空格或大小写混合的字符串
canBeDate判断是否可以转换成日期
canBeNumber检查值是否可以安全地转换为数字 使用parseFloat()进行转换尝试,对于可以解析为有效数字的值返回true 特别注意:空字符串('')、true、false等特殊值的处理
capitalize首字母大写
capitalizeFirst-
checkOPFSAvailable异步检测 OPFS 是否真正可用 有些浏览器可能有 API 但实际不可用
chunk将数组分割成指定大小的数组块 当数组长度不能被分割大小整除时,最后一个块将包含剩余的元素
cloneDeep深拷贝值
compressToBase64Url压缩字符串到 base64 中
createBroadcastTopic创建一个 BroadcastChannel 主题
dateStringToDateUTC 时间转换 offset 分钟 date 2018-12-04 time 19:09:10
dateStringWithTimezoneUTC 时间转换
debounce-
decodeJWTPayload解码 JWT token 的信息
decompressFromBase64Url从 base64 解压字符串
deepFreeze深度冻结对象及其所有嵌套属性,使其不可修改 递归遍历对象的所有属性,对每个对象和函数属性调用 Object.freeze()
difference计算两个数组的差异,返回仅存在于第一个数组中且不在第二个数组中的元素 元素比较使用严格相等运算符 (===),因此对象仅在引用相同时被视为相等 结果数组保留元素在原数组中的出现顺序
emptyFunction空函数,不执行任何操作 常用作默认回调函数或占位符函数
flatten将嵌套一层的数组扁平化为一维数组 仅处理数组中的直接嵌套数组元素,不进行深度扁平化
flattenDeep将任意深度的嵌套数组完全扁平化为一维数组 递归处理所有层级的嵌套数组,直至所有元素都为非数组类型
flattenPathObjectToPlainObject将扁平的路径对象转换为嵌套的普通对象 支持点号路径(如 'a.b.c')和数组路径(如 'a[0].b')
formatCountdown倒计时
formatPassTime-
generateKeyBetween在两个排序键之间生成一个新的排序键 用于在有序列表中插入新项目,支持任意位置插入
generateKeysBetween在两个排序键之间生成n个排序键 用于批量插入多个项目到有序列表中
get安全地从对象中获取嵌套属性,支持复杂路径解析 通过路径字符串访问对象的深层属性,当路径不存在时返回默认值 支持多种路径格式:点表示法、方括号表示法和逗号分隔的数组路径
has检查对象是否包含指定的嵌套属性(仅检查自有属性) 支持通过点表示法访问嵌套属性,如'a.b.c' 如果对象为null/undefined或任何父属性不存在,返回false
intersection计算多个数组的交集,返回所有输入数组中都存在的元素 使用严格相等运算符 (===) 进行元素比较,结果数组保留第一个数组中的元素顺序 如果输入单个数组,则返回该数组的去重版本
isArrayBuffer检查值是否为ArrayBuffer类型 使用instanceof运算符进行判断
isBoolean检查值是否为布尔类型 支持直接布尔值、布尔对象和实现了valueOf()返回布尔值的对象
isDate检查值是否为Date对象 使用instanceof和Object.prototype.toString.call()两种方式进行判断
isEmpty检查值是否为空 支持多种类型的空值判断,包括null、undefined、空字符串、空数组、空对象等
isEqual-
isEqualDate-
isEqualUint8Array-
isFloat-
isFunction-
isInt-
isIntArray-
isISODateStringstring 是否是 ISO 日期字符串
isMSTime判断是否是 ms 时间类型 https://github.com/vercel/ms
isNil检查值是否为null或undefined 使用严格相等(===)进行比较
isNumber检查值是否为有效数字(排除NaN) 使用Number(value) === value进行判断,确保值是数字且不是NaN
isNumberArray-
isObject检查值是否为纯对象(通过Object构造函数创建的对象) 排除数组、null、日期、正则表达式等特殊对象
isObjectLike-
isOPFSSupported检测浏览器是否支持 OPFS (Origin Private File System)
isPlainObject检查值是否为纯对象(通过Object构造函数创建的普通对象) 排除数组、日期、正则表达式、Map、Set等特殊对象
isPrimitive检查值是否为JavaScript原始类型 JavaScript原始类型包括null、undefined、字符串、数字、布尔值、符号和大整数
isPromise-
isRegExp检查值是否为正则表达式类型 使用instanceof运算符进行判断
isString检查值是否为字符串类型 使用typeof运算符进行判断,返回布尔值
isStringArray-
isSymbol-
isUint8Array检查值是否为Uint8Array类型 使用instanceof运算符进行判断
kebabCase转换为 kebab-case
logError优化错误打印,以表格形式显示错误信息
msTimeToMilliseconds] ms 时间转换为毫秒 value https://github.com/vercel/ms
needArray将任意值标准化为数组格式,提供一致的数组处理接口 处理规则: - 若输入已是数组,则直接返回原数组(不创建新数组) - 若输入为null/undefined,则返回空数组 - 其他任何类型的值均包装为单元素数组
nextMacroTask在下一个宏任务中执行函数 使用 setTimeout(fn, 0) 将函数推迟到当前执行栈清空后执行
nextMicroTask将函数推迟到下一个微任务队列执行 使用Promise.resolve()实现,确保函数在当前同步代码执行完成后、DOM更新前执行
numberStep将数值向上取整到最接近的步长倍数 常用于表单控件、网格布局等需要按固定间隔取值的场景
numberStepScreenSize根据设备像素比调整数值后,按步长取整 主要用于处理不同DPI屏幕下的尺寸计算,确保在高分辨率屏幕上保持合适的步长
numberStrip去除数字的无用小数位,解决浮点数精度问题 通过限制有效数字位数来消除JavaScript浮点数运算产生的微小误差 例如:0.1 + 0.2 通常得到 0.30000000000000004,使用本函数可得到 0.3
omit从对象中排除指定的属性,创建并返回一个新对象 包含源对象的所有自有属性,除了指定要排除的属性 当输入对象为null/undefined时返回空对象,当排除列表为空时返回原对象的浅拷贝
omitBy创建一个新对象,通过方法除了指定的属性
once创建一个只执行一次的函数,后续调用将返回第一次执行的结果 适用于初始化函数、资源加载等只需要执行一次的场景
orderBy根据指定的迭代器和排序方向对数组进行排序 支持多字段排序,按迭代器数组顺序依次比较,当字段相等时继续比较下一个字段
parseChineseNumber-
parseTime计算两个日期之间的时间差,并分解为年、月、日、时、分、秒
performChunk分片执行任务 只能在浏览器环境中执行 把一个大任务分片执行,每次执行一小部分任务,然后让出主线程,等待下一次执行
pick从对象中选取指定的属性,创建并返回一个新对象 只包含指定的自有属性,忽略继承属性和不存在的属性 当输入对象为null/undefined时,返回空对象
pickBy-
plainObjectToFlattenPathObject扁平化对象
queryParse-
queryStringify-
randomArrayItem从数组中随机选择一个元素 使用 Math.random() 生成随机索引,返回对应位置的元素
randomFloat生成指定范围内的随机浮点数 使用 Math.random() 生成 0 到 1 之间的随机数,然后映射到指定范围
randomInt生成指定范围内的随机整数 使用 Math.random() 生成随机数,然后使用 Math.floor() 向下取整
randomString生成指定长度和字符集的随机字符串 使用 Web Crypto API 的 crypto.getRandomValues() 生成加密安全的随机数
randomUintByLength生成指定位数的随机正整数 通过生成随机数字字符串然后转换为数字实现
randomUintString生成指定长度的随机数字字符串,第一位不为 0 适用于生成数字 ID 或序列号,确保不会以 0 开头
requestIdleCallbackPolyfill-
rmbUppercase转换人民币大写
rsaDecryptRSA 解密
rsaEncryptRAS 加密
rsaGenerateKey生成 RSA 密钥对
set设置对象中指定路径的属性值,自动创建不存在的嵌套路径 支持点表示法和方括号表示法的路径,根据下一个路径段类型自动创建数组或对象 例如:路径'a[0].b'会创建数组和对象结构
setBase-
setWith这个方法类似 set 除了它接受一个 customFun 决定如何设置对象路径的值。 如果 fun 返回 undefined 将会有它的处理方法代替。 customFun 会传入3个参数:(nsValue, key, nsObject)
similarity-
sleep等待指定的毫秒数
snakeCase将字符串转换为蛇形格式
sortBy创建一个按指定对象属性排序的比较函数,用于数组排序 按属性值的自然顺序进行升序排序,支持字符串、数字等基本类型比较 生成的比较函数兼容Array.sort()方法,会修改原数组
startCase-
stringSingleline将多行文本转换为单行文本,移除多余的空白字符 去除首尾空白,并将连续的空白字符替换为单个空格
stringTemplate模板字符串
stringTime将时间数值格式化为带单位的字符串
stringToArrayBuffer字符串转 ArrayBuffer
throttle创建一个节流函数,确保函数在指定时间间隔内最多执行一次 与防抖不同,节流会定期执行函数,而非等待最后一次调用后执行,适用于限制高频事件(如滚动、调整大小)的触发频率
toInt将值转换为整数,使用向下取整(正数)和向上取整(负数)的策略
toPlainObject将任意值转换为普通对象,只保留自有属性 通过遍历对象的可枚举属性,创建一个新的普通对象
traverseObjectKeys-
tryToNumber安全地将值转换为数字,只在能转换为有效数字时才转换 如果无法转换为有效数字(NaN、无穷大等),则返回原值不变
uint8ArrayToString将Uint8Array转换为UTF-8字符串 使用TextDecoder API进行解码,确保正确处理多字节字符
uncapitalize首字母小写
uncapitalizeFirst-
unionBy根据指定的键函数对数组进行去重,返回唯一元素的新数组 使用键函数提取每个元素的唯一标识符,保留第一次出现的元素
unixTimestampunix 时间戳
urlJoin-
zipObject创建一个对象,将键数组和值数组/函数配对组合 支持多种值来源:固定值、值数组或值生成函数

References

noop

Renames and re-exports emptyFunction