Skip to content

工具函数

类型判断

ts
// 是否为函数
isFunction(() => {}) // true

// 是否为对象
isObject({}) // true
isObject(null) // false

// 是否为日期
isDate(new Date()) // true
isDate(1704038399000) // false
isDate('2023-12-31 23:59:59') // false

// 是否为undefined
isUndefined(undefined) // true
isUndefined('undefined') // false

// 是否为数值
isNumber(1) // true

// 是否为Promise
isPromise(new Promise(() => {})) // true

// 是否为字符串
isString('') // true

// 是否为布尔值
isBoolean(true) // true

// 是否为数组
isArray([]) // true

// 是否为普通对象
isPlainObject({}) // true
isPlainObject([]) // false
isPlainObject(() => {}) // false

防抖节流

防抖

ts
debounce(() => {}, 1000)
参数说明类型默认值
fn回调函数(...args: any[]) => any-
wait等待时间number300

节流

ts
throttle(() => {}, 1000)

throttle(() => {}, 1000, { leading: true })

throttle(() => {}, 1000, { trailing: true })

throttle(() => {}, 1000, { leading: true, trailing: true })
参数说明类型默认值
fn回调函数(...args: any[]) => any-
wait等待时间number300
leading等待前执行,即立即执行booleanfalse
trailing等待后执行,即超时后执行booleanfalse

对象操作

ts
// 创建由所选对象属性组成的对象
pick({ a: 1, b: 2 }, ['a']) // { a: 1 }

// 反向版 pick
omit({ a: 1, b: 2 }, ['a']) // { b: 2 }

// 递归合并来源对象自身和继承的可枚举属性到目标对象
merge({ a: 1 }, { b: 2 }) // { a: 1, b: 2 }
merge({ a: 1 }, { b: 2 }, { c: 3 }) // { a: 1, b: 2, c: 3 }

其他

ts
// 转换对象为字符串参数值
convertQueryToString({ a: 1, b: 2 }) // a=1&b=2
convertQueryToString({ a: 1, c: [3, 4] }) // a=1&c=3,4

// 判断是否为空
isEmpty(null) // true
isEmpty(undefined) // true
isEmpty('') // true
isEmpty([]) // true
isEmpty({}) // true

// 空函数, 通常用于设置默认值
noop() // undefined
fn(noop) // undefined

// 睡眠,延迟执行
sleep(1000).then(() => {
  console.log('1秒后执行')
})