web-utils-super
Version:
前端函数库
677 lines (592 loc) • 18.4 kB
TypeScript
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;
}