UNPKG

web-utils-super

Version:

前端函数库

677 lines (592 loc) 18.4 kB
declare namespace utils { /** * * @desc 判断两个数组是否相等 * @param {Array} arr1 * @param {Array} arr2 * @return {Boolean} */ export function arrayEqual(arr1: Array<any>, arr2: Array<any>): boolean; /** * @desc 获得两个数组交集 * @param {Array} arr1 * @param {Array} arr2 * @return {Array} */ export function arrayIntersection( arr1: Array<any>, arr2: Array<any> ): Array<any>; /** * @desc 获得两个数组差集 * @param {Array} arr1 * @param {Array} arr2 * @return {Array} */ export function arrayDiff(arr1: Array<any>, arr2: Array<any>): Array<any>; /** * * @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; interface ResizeFn { add: Function; remove: Function; clear: Function; } /** * * @desc window.onresize 事件 专用事件绑定器 */ export const onWindowResize: ResizeFn; /** * * @desc 宽度变化修改根节点fontsize * @param {Number} width 以width为基准 在width宽度下 1rem = 100px */ export function resizeChangeFontSize(width: number):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 判断元素是否在可视区域内,适用于懒加载和无限滚动,但是每次scroll都得重新计算,性能耗费大,并且该方法会引起重绘回流 * @param {HTMLElement} dom * @return {Boolean} */ export function checkInView(dom: HTMLElement): boolean; /** * @desc 创建图形验证码 * @param {String} options 容器id * @param {String} code 验证码 */ export function createCodeImg(options: string, code: string): void; /** * @desc 防抖函数,设置一个定时器,约定在xx毫秒后再触发事件处理,每次触发事件都会重新设置计时器,直到xx毫秒内无第二次操作 * @param {Function} func * @param {Number} wait * @param {Boolean} promptly 默认false: wait毫秒内无第二次操作触发 | true:立即触发一次,wait毫秒内无第二次操作清空计时器,然后再次操作即可触发func * @return {Function} */ export function debounce<T>( func: (...args: any[]) => void, wait: number, promptly?: boolean ): T; /** * @desc: 节流函数 每隔一段时间就执行一次,设置一个定时器,约定xx毫秒后执行事件,如果时间到了,那么执行函数并重置定时器 * @param {Function} func * @param {Number} wait * @return {Function} */ export function throttle( func: (...args: any[]) => void, wait: number ): Function; /** * @desc 函数柯里化 是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术 * @param {Function} fn * @return {Function | any} */ export function curryIt(fn: (...args: any[]) => any | void): Function; /** * @desc 将图片base64转为Blob类型 * @param {String} base64 * @param {String} fileName 文件名 * @return {Blob} */ export function base64ToFile(base64: string, fileName?: string): any; /** * @desc: 截图 返回图片base64链接 * @param {String} id * @param {Number} height * @param {Number} width * @return {String} base64 */ export function domToBase64( id: string, height: Number, width: Number ): string; /** * @desc: 通过base64下载图片 * @param {String} dataUrl * @param {String} fileName */ export function downByBase64(dataUrl: string, fileName: string): void; /** * @desc: 下载文件 excel word * @param {String} fileName 文件名 * @param {String} fileType 文件类型 可选值:excel | word * @param {File | Blob} data 二进制流 */ export function downloadFile( fileName: string, fileType: string, data: any ): void; /** * @desc 通过File或Blob下载图片 * @param {File | Blob} data File 对象或 Blob 对象 */ export function downloadImgFile(data: any): void; /** * @desc 将图片资源转为base64 * @param {String} src 图片资源路径 * @param {String} type 图片类型,默认png 只支持 'png'|'jpeg'| 'webp' * @param {Number} width 要生成的base64图片宽 * @param {Number} height 要生成的base64图片高 * @return {String} */ export function imgToBase64( src: string, type: string, width: number, height: number ): string; /** * @desc: 格式化文件大小 * @param {Number} fileSize * @return {String} */ export function formatFileSize(fileSize: number): string; /** * @desc: 取得文件后缀名 * @param {String} fileName * @return {String} */ export function getFileSuffix(fileName: string): string; /** * @desc: 二进制流转图片链接 * @param {any} steam * @return {String} url */ export function steamToImg(steam: any): string; /** * @desc 加法运算,避免数据相加小数点后产生多位数和计算精度损失 * @param {Number} augend 相加的第一个数 * @param {Number} addend 相加的第二个数 * @return {Number} 总和 */ export function add(augend: number, addend: number): number; /** * @desc 减法运算 * @param {Number} augend 相减的第一个数 * @param {Number} addend 相减的第二个数 * @return {Number} 差 */ export function subtract(augend: number, addend: number): number; /** * @desc 乘法运算 * @param {Number} augend 相乘的第一个数 * @param {Number} addend 相乘的第二个数 * @return {Number} 乘积 */ export function multiply(augend: number, addend: number): number; /** * @desc 除法计算 * @param {Number} augend 相除的第一个数 * @param {Number} addend 相除的第二个数 * @return {Number} 返回商数 */ export function divide(augend: number, addend: number): number; /** * @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 判断数据类型 * @param {any} para * @return {String} 'number' | 'string' 等 */ export function isType(para: any): string; /** * * @desc 随机生成十六进制颜色 * @return {String} */ export function randomColor(): string; /** * @desc 生成指定范围[min, max]的RGB颜色 * @param {Number} min * @param {Number} max * @return {String} */ export function randomColorRGB(min: number, max: number): string; /** * * @desc 生成指定范围[min, max]的随机数 * @param {Number} min * @param {Number} max * @param {Boolean} integer 是否返回整数 * @return {Number} */ export function randomNum(min: number, max: number, integer: boolean): number; /** * @desc: 判断是否为json * @param {any} value * @return {Boolean} */ export function isJson(value: any): boolean; /** * @desc: 判断是否为空(是否为空字符串、null、undefined、空对象、空数组、布尔类型为false) * @param {String | null | undefined | Object | Array | Boolean} value * @return {*} */ export function isEmpty( value: string | null | undefined | object | Array<any> | boolean ): boolean; /** * @desc: 判断是否是IP * @param {String} ip * @return {Boolean} */ export function isIP(ip: string): boolean; /** * @desc: 判断是否是端口号 * @param {String} value * @return {Boolean} */ export function isPort(value: string): boolean; /** * @desc: 判断纬度 -90.0~+90.0(整数部分为0~90,必须输入1到6位小数) * @param {Number} value * @return {Boolean} */ export function isLatitude(value: number): boolean; /** * @desc: 判断经度 -180.0~+180.0(整数部分为0~180,必须输入1到6位小数) * @param {Number} value * @return {Boolean} */ export function isLongitude(value: number): boolean; /** * @desc 判断是否为数字 * @param {Number} str * @param {String} type 'num' 数字 | 'int' 整数 | 'flot' 浮点数 默认num * @param {Boolean} positive 是否是正数,默认undefined,不判断正负 */ export function isNum( str: number, type?: string, positive?: boolean ): boolean; /** * * @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 isPhone(str: string | number): boolean; /** * * @desc 判断是否为URL地址 * @param {String} str * @return {Boolean} */ export function isUrl(str: string): boolean; /** * @desc 判断是否是车牌号 * @param {String} str * @param {Number} type 1:新能源+非新能源 2:新能源车牌号 3:非新能源车牌号 * @return {Boolean} */ export function isLicencePlate(str: string, type?: number): boolean; /** * @desc 判断是否为只有中文 * @param {String} str * @return {Boolean} */ export function isChinese(str: string): boolean; /** * @desc 判断是否是base64格式 * @param {String} str * @return {Boolean} */ export function isBase64(str: string): boolean; /** * @desc: 字符转换,type: 1:首字母大写 2:首字母小写 3:大小写转换 4:全部大写 5:全部小写 * @param {String} str 字符串 * @param {Number} type 转换方式 * @return {String} */ export function changeCase(str: string, type: number): string; /** * @desc: 16进制颜色转 RGB | RGBA 字符串,有透明度则转换为RGBA * @param {String} color 16进制颜色 * @param {Number} opa 透明度 * @return {String} */ export function colorToRGB(color: string, opa: number): string; /** * @desc 现金额转大写 * @param {Number} n * @return {String} */ export function digitUppercase(n: number): string; /** * @desc 字符串格式化 * @param {String} str 要格式化的字符串 * @param {Number} frontLen 保留前几位 * @param {Number} endLen 保留后几位 * @param {String} cha 替换的字符串 * @return {String} */ export function formatString( str: string, frontLen?: number, endLen?: number, cha?: string ): string; /** * @desc 生成字母数组 * @param {String} range 'all' 包含大小写 | 'lower' 只有小写 | 'upper' 只有大写 * @return {Array} */ export function getAllLetter(range?: string): Array<string>; /** * @desc: md5加密 * @param {String} string * @return {String} */ export function md5(string: string): string; /** * * @desc 判断浏览器是否支持webP格式图片 * @return {Boolean} */ export function isSupportWebP(): boolean; /** * @desc 格式化${startTime}距现在的已过时间 * @param {Date} startTime * @return {String} */ export function formatPassTime(startTime: string | Date): string; /** * * @desc 格式化现在距${endTime}的剩余时间 * @param {Date} endTime * @return {String} */ export function formatRemainTime(endTime: string | Date): string; /** * @desc 格式化时间戳 * @param {Date | String} time 时间 * @param {String} fmt 格式 * @return {String} */ export function formatTime(time: string | Date, fmg?: string): string; /** * @desc: 获取某天起止时间 * @param {Date | String} time 年月日 '2022-2-2' | '2022/2/2' | '2022.2.2' | 不传默认是当天 * @return {Array} */ export function getCurrentDay(time?: string | Date): Array<string>; /** * @desc 获取某周起止时间 * @param {Date | String} time 年月日 '2022-2-2' | '2022/2/2' | '2022.2.2' | 不传默认是当天 * @return {Array} */ export function getCurrentWeek(time?: string | Date): Array<string>; /** * @desc 获取某月起止时间 * @param {Date | String} time 年月日 '2022-2-2' | '2022/2/2' | '2022.2.2' | 不传默认是当天 * @return {Array} */ export function getCurrentMonth(time: string | Date): Array<string>; /** * @desc 获取某季度起止时间 * @param {Date | String} time 年月日 '2022-2-2' | '2022/2/2' | '2022.2.2' | 不传默认是当天 * @return {Array} */ export function getCurrentQuarter(time: string | Date): Array<string>; /** * @desc 获取某年起止时间 * @param {Date | String} time 年月日 '2022-2-2' | '2022/2/2' | '2022.2.2' | 不传默认是当天 * @return {Array} 起止时间数组集合 */ export function getCurrentYear(time: string | Date): Array<string>; /** * @desc 获取某天时间 * @param {Number} num 当天0 昨天传-1 明天传1 以此类推 * @param {String} str 时间分割方式,默认是'-' * @return {String} */ export function getDay(num: number, str: string): string; /** * @desc 得到某季度开始的月份 * @param {Number} month 需要计算的月份 0-11 * @return {Number} */ export function getQuarterSeasonStartMonth(month: number): number; /** * * @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参数中对应key的值 * @param {String} key * @param {String} url * @return {String} */ export function getQueryString(key: string, url: string): string; /** * * @desc url参数转对象 * @param {String} url default: window.location.href * @return {Object} */ export function parseQueryString(url?: URL): object; /** * * @desc 对象序列化 * @param {Object} obj * @param {String} str 连接符 默认'&' * @return {String} */ export function stringfyQueryString(obj: object, str?: string): string; } declare module "web-utils-super" { export = utils; }