- 个人项目经验,涵盖大量常用函数集合,建议与 deno 的
@std/*
互为补充。这个库中与 @std 系列有一些交集,交集的部分通常是我个人觉得我自己的实现更好:
- 可能是性能上更好
- 可能是使用体验上更易用好用
- 可能是条件边界覆盖更全。
- 这个库不会包含垫片相关的,只要在 esnext 范畴内我都会使用,所以请自行处理垫片相关的问题
install:
npm install @gaubee/util
pnpm install @gaubee/util
yarn install @gaubee/util
deno add @gaubee/util
bun add @gaubee/util
usage:
注意,本项目没有副作用了,对 Tree-Shaking 支持良好,你可以直接 import 一整个包,最终 bundle 的时候,只会包含你实际使用的部分。
import {delay} from "@gaubee/util";
- 个人项目经验,涵盖大量常用函数集合,建议与 deno 的
@std/*
互为补充。这个库中与 @std 系列有一些交集,交集的部分通常是我个人觉得我自己的实现更好:
- 可能是性能上更好
- 可能是使用体验上更易用好用
- 可能是条件边界覆盖更全。
- 这个库通常不会包含垫片相关的,只要在 esnext 范畴内我都会使用,所以请自行处理垫片相关的问题
例如 Promise.withResolvers
- 参考链接:jsr-docs 文档
- 参考链接:deepwiki-docs 文档
-
abort_signal_merge
:(..._signals: (AbortSignal | undefined | null)[]) => AbortSignal | undefined
- 将 N 个 AbortSignal 合并成 0/1 个
-
arr_set_next
:(arr: Array<T>, item: T) => void
- 在数组末尾追加元素
-
sparse_arr_get_first
:<T>(arr: ArrayLike<T>) => T
- 取数组第一个元素(跳过稀疏部分),不存在则抛出异常
-
sparse_arr_get_first_or_null
:<T>(arr: ArrayLike<T>) => T | undefined
- 取数组第一个元素(跳过稀疏部分),不存在则返回 undefined
-
sparse_arr_get_first_or_default
:<T, R>(arr: ArrayLike<T>, defaultValue: () => R) => T | R
- 取数组第一个元素(跳过稀疏部分),不存在则返回默认值
-
arr_get_first
:<T>(arr: ArrayLike<T>) => T
- 取数组第一个元素(下标 0),不存在则抛出异常
-
arr_get_first_or_null
:<T>(arr: ArrayLike<T>) => T | undefined
- 取数组第一个元素(下标 0),不存在则返回 undefined
-
arr_get_first_or_default
:<T, R>(arr: ArrayLike<T>, defaultValue: () => R) => T | R
- 取数组第一个元素(下标 0),不存在则返回默认值
-
sparse_arr_get_last
:<T>(arr: ArrayLike<T>) => T
- 取数组最后一个元素(跳过稀疏部分),不存在则抛出异常
-
sparse_arr_get_last_or_null
:<T>(arr: ArrayLike<T>) => T | undefined
- 取数组最后一个元素(跳过稀疏部分),不存在则返回 undefined
-
sparse_arr_get_last_or_default
:<T, R>(arr: ArrayLike<T>, defaultValue: () => R) => T | R
- 取数组最后一个元素(跳过稀疏部分),不存在则返回默认值
-
arr_get_last
:<T>(arr: ArrayLike<T>) => T
- 取数组最后一个元素(下标 length-1),不存在则抛出异常
-
arr_get_last_or_null
:<T>(arr: ArrayLike<T>) => T | undefined
- 取数组最后一个元素(下标 length-1),不存在则返回 undefined
-
arr_get_last_or_default
:<T, R>(arr: ArrayLike<T>, defaultValue: () => R) => T | R
- 取数组最后一个元素(下标 length-1),不存在则返回默认值
-
arr_remove_first
:<T>(arr: T[], value: T) => number
- 移除数组中指定的第一个匹配项,返回移除的索引,未找到返回 -1
-
bigint_gcd
:(left: bigint, right: bigint) => bigint
- 计算两个 bigint 的最大公约数 (GCD)
-
date_clone
:(date: Date) => Date
- 克隆 Date 对象
-
Duration
:type Duration = { year: number; month: number; day: number; minutes: number; seconds: number; milliseconds: number; }
- 人类可读的时间对象类型
-
date_add_duration
:(date: Date, duration: Partial<Duration>) => Date
- 向 Date 对象添加时间段
-
date_to_duration
:(date: Date) => Duration
- 将 Date 对象转换为 Duration 对象
-
date_set_duration
:(date: Date, duration: Partial<Duration>) => Date
- 设置 Date 对象的指定时间部分
-
FormatifyDate
:type FormatifyDate = { ... }
- 用于格式化的日期信息对象类型
-
date_formatify
:(date: string | number | Date) => FormatifyDate
- 将日期转换为易于格式化的信息对象
-
date_format
:(format: string, date: string | number | Date) => string
- 根据指定模板格式化日期
-
func_debounce
:<T extends Func>(fn: T, wait: number | Timmer = 0, options: { before?: boolean }) => DebouncedFunction<T>
- 创建一个防抖函数,延迟执行提供的函数直到等待时间过去。包含
isPending
,cancel
,source
,flush
方法。 -
DebouncedFunction
: 带有额外控制方法的函数类型