UNPKG

outils

Version:

前端业务代码工具库

307 lines (268 loc) 8.7 kB
declare namespace outils { /** * * @desc 判断两个数组是否相等 * @param {Array} arr1 * @param {Array} arr2 * @return {Boolean} */ export function arrayEqual(arr1: Array<any>, arr2: Array<any>): boolean /** * * @desc 为元素添加class * @param {HTMLElement} ele * @param {String} cls */ export function addClass(ele: HTMLElement, cls: string): void /** * * @desc 判断元素是否有某个class * @param {HTMLElement} ele * @param {String} cls * @return {Boolean} */ export function hasClass(ele: HTMLElement, cls: string): boolean /** * * @desc 为元素移除class * @param {HTMLElement} ele * @param {String} cls */ export function removeClass(ele: HTMLElement, cls: string): boolean /** * * @desc 根据name读取cookie * @param {String} name * @return {String} */ export function getCookie(name: string): string /** * * @desc 根据name删除cookie * @param {String} name */ export function removeCookie(name: string): void /** * * @desc 设置Cookie * @param {String} name * @param {String} value * @param {Number} days */ export function setCookie(name: string, value: string, days: number): void /** * * @desc 获取浏览器类型和版本 * @return {String} */ export function getExplore(): string /** * * @desc 获取操作系统类型 * @return {String} */ export function getOS(): void /** * * @desc 获取滚动条距顶部的距离 */ export function getScrollTop(): void /** * * @desc 获取一个元素的距离文档(document)的位置,类似jQ中的offset() * @param {HTMLElement} ele * @returns { {left: number, top: number} } */ export function offset(ele: HTMLElement): { left: number, top: number } /** * * @desc 在${duration}时间内,滚动条平滑滚动到${to}指定位置 * @param {Number} to * @param {Number} duration */ export function scrollTo(to: number, duration: number): void /** * * @desc 设置滚动条距顶部的距离 * @param {Number} value */ export function setScrollTop(value: number): void /** * * @desc H5软键盘缩回、弹起回调 * 当软件键盘弹起会改变当前 window.innerHeight,监听这个值变化 * @param {Function} downCb 当软键盘弹起后,缩回的回调 * @param {Function} upCb 当软键盘弹起的回调 */ export function windowResize(downCb: () => void, upCb: () => void): void /** * @desc 函数防抖 * 与throttle不同的是,debounce保证一个函数在多少毫秒内不再被触发,只会执行一次, * 要么在第一次调用return的防抖函数时执行,要么在延迟指定毫秒后调用。 * @example 适用场景:如在线编辑的自动存储防抖。 * @param {Number} delay 0或者更大的毫秒数。 对于事件回调,大约100或250毫秒(或更高)的延迟是最有用的。 * @param {Boolean} atBegin 可选,默认为false。 * 如果`atBegin`为false或未传入,回调函数则在第一次调用return的防抖函数后延迟指定毫秒调用。 如果`atBegin`为true,回调函数则在第一次调用return的防抖函数时直接执行 * @param {Function} callback 延迟毫秒后执行的函数。`this`上下文和所有参数都是按原样传递的, * 执行去抖动功能时,,调用`callback`。 * * @return {Function} 新的防抖函数。 */ export function debounce(delay: number, atBegin?: boolean, callback?: () => void): void /** * @desc 函数节流。 * 适用于限制`resize`和`scroll`等函数的调用频率 * * @param {Number} delay 0 或者更大的毫秒数。 对于事件回调,大约100或250毫秒(或更高)的延迟是最有用的。 * @param {Boolean} noTrailing 可选,默认为false。 * 如果noTrailing为true,当节流函数被调用,每过`delay`毫秒`callback`也将执行一次。 * 如果noTrailing为false或者未传入,`callback`将在最后一次调用节流函数后再执行一次. * (延迟`delay`毫秒之后,节流函数没有被调用,内部计数器会复位) * @param {Function} callback 延迟毫秒后执行的函数。`this`上下文和所有参数都是按原样传递的, * 执行去节流功能时,调用`callback`。 * @param {Boolean} debounceMode 如果`debounceMode`为true,`clear`在`delay`ms后执行。 * 如果debounceMode是false,`callback`在`delay` ms之后执行。 * * @return {Function} 新的节流函数 */ export function throttle(delay: number, noTrailing?: boolean, callback?: () => void, debounceMode?: boolean): void /** * @desc 根据keycode获得键名 * @param {Number} keycode * @return {String} */ export function getKeyName(keycode: number): string /** * @desc 深拷贝,支持常见类型 * @param {Any} values * @return {Any} */ export function deepClone(values: any): any /** * * @desc 判断`obj`是否为空 * @param {Object} obj * @return {Boolean} */ export function isEmptyObject(obj: object): boolean /** * * @desc 随机生成颜色 * @return {String} */ export function randomColor(): string /** * * @desc 生成指定范围[min, max]的随机数 * @param {Number} min * @param {Number} max * @return {Number} */ export function randomNum(min: number, max: number): number /** * * @desc 判断是否为16进制颜色,rgb 或 rgba * @param {String} str * @return {Boolean} */ export function isColor(str: string): boolean /** * * @desc 判断是否为邮箱地址 * @param {String} str * @return {Boolean} */ export function isEmail(str: string): boolean /** * * @desc 判断是否为身份证号 * @param {String|Number} str * @return {Boolean} */ export function isIdCard(str: string | number): boolean /** * * @desc 判断是否为手机号 * @param {String|Number} str * @return {Boolean} */ export function isPhoneNum(str: string | number): boolean /** * * @desc 判断是否为URL地址 * @param {String} str * @return {Boolean} */ export function isUrl(str: string): boolean /** * * @desc 现金额转大写 * @param {Number} n * @return {String} */ export function digitUppercase(n: number): string /** * * @desc 判断浏览器是否支持webP格式图片 * @return {Boolean} */ export function isSupportWebP(): boolean /** * @desc 格式化${startTime}距现在的已过时间 * @param {Date} startTime * @return {String} */ export function formatPassTime(startTime: Date): string /** * * @desc 格式化现在距${endTime}的剩余时间 * @param {Date} endTime * @return {String} */ export function formatRemainTime(endTime: Date): string /** * * @desc 是否为闰年 * @param {Number} year * @returns {Boolean} */ export function isLeapYear(year: number): boolean /** * @desc 判断是否为同一天 * @param {Date} date1 * @param {Date} date2 可选/默认值:当天 * @return {Boolean} */ export function isSameDay(date1: Date, date2: Date): boolean /** * @desc 获取指定日期月份的总天数 * @param {Date} time * @return {Number} */ export function monthDays(date: Date): number /** * @desc ${startTime - endTime}的剩余时间,startTime大于endTime时,均返回0 * @param { Date | String } startTime * @param { Date | String } endTime * @returns { Object } { d, h, m, s } 天 时 分 秒 */ export function timeLeft(startTime: Date | string, endTime: Date | string): { d: number, h: number, m: number, s: number } /** * * @desc url参数转对象 * @param {String} url default: window.location.href * @return {Object} */ export function parseQueryString(url?: URL): object /** * * @desc 对象序列化 * @param {Object} obj * @return {String} */ export function stringfyQueryString(obj: object): string } declare module "outils" { export = outils }