project-libs
Version:
project-libs 是一个常用函数集锦的工具库,包括浏览器、函数式、常用验证、cookie、数组处理等函数。
428 lines (379 loc) • 11.2 kB
TypeScript
/**
* 判断数据类型
* @param ele {any} 传入的数据
* @returns {string} boolean/number/string/function/array/date/regExp/undefined/null/object/map/set/symbol
*/
export declare function type(ele: any): string;
/**
* 判断空对象,空数组,空字符串
* @param obj 数组或者对象或者字符串
* @returns boolean
*/
export declare function isEmpty(obj: Array<any> | Object): boolean;
/**
* 验证是否可以被JSON.parse
* @param ele {any} 元素
* @returns {boolean} boolean
*/
export declare function isJsonString(ele: any): boolean;
/**
* 操作 Cookie
*/
declare namespace cookie {
interface CONFIG {
hours?: number; // 过期时间,单位小时
path?: string; // 路径
domain?: string; // 域名
secure?: boolean; // 安全策略
httpOnly?: boolean; // 设置键值对是否可以被 js 访问
sameSite?: "strict" | "Strict" | "lax" | "Lax" | "none" | "None"; // 用来限制第三方 Cookie
}
interface CookieStatic {
defaults: CONFIG;
/**
* 判断cookie是否可用
* @returns {boolean} boolean
*/
support(): boolean;
/**
* 添加cookie
* @param name {string} cookie 的键
* @param value {string | object} cookie 值
* @param config {object} 可选配置项
* ```
* {
* hours: 过期时间,单位小时,
* path: 路径,
* domain: 域名,
* secure: 安全策略,
* httpOnly: 设置键值对是否可以被 js 访问,
* sameSite: 用来限制第三方 Cookie
* }
* ```
*/
set(name: string, value: string | object, config?: CONFIG): void;
/**
* 查询 cookie
* @param name {string} Cookie 的键;如果参数为空则获取所有的cookie
* @returns {string | object | null} 有参数获取单独的cookie,没有参数获取所有cookie;获取不到则返回 null
*/
get(name?: string): string | object | null;
/**
* 删除 cookie
* @param name Cookie 的键;如果参数为空,则清理所有的cookie
* @param path 路径,默认为''
*/
remove(name: string, path?: string): void;
}
}
declare const cookie: cookie.CookieStatic;
/**
* base64转码和解码
*/
declare namespace base64 {
interface base64Static {
/**
* 字符串转 base64
* @param str {string} 字符串
* @returns {string} 字符串
* @summary btoa() 方法不支持 IE9 及更早的 IE 版本
*/
encode(str: string): string;
/**
* base64 转字符串
* @param str {string} 字符串
* @returns {string} 字符串
* @summary atob() 方法不支持 IE9 及更早的 IE 版本
*/
decode(str: string): string;
}
}
declare const base64: base64.base64Static;
/**
* replace 函数,可以根据指定的选项来替换内容
* @param source {string} 需要替换的资源
* @param option {object | object[]} 选项,可以为对象或者对象数组,{target: '<', replace: ''} 或者 [{target: '<', replace: ''}]
* @returns {string} string
*/
export declare function replace(source: String, option: [] | {}): string;
/**
* 从对象中根据特定的属性返回一个新的对象
* @param object 对象来源
* @param props 要选取的属性
*/
export declare function pick(object: object, props: Array<any>);
/**
* 从对象中排除特定的属性返回一个新的对象
* @param object 对象来源
* @param props 要排除的属性
*/
export declare function unPick(object: object, props: Array<any>);
/**
* 浅拷贝,才方法只针对普通对象{}和数组[]
* @param source {any} 需要拷贝的元素
* @returns {any} any
*/
export declare function clone(source: any): any;
/**
* 深层次克隆
* @param data {any} 数据源
* @returns {any} any
*/
export declare function deepClone(data: any): any;
/**
* 判断两个变量是否相等, 此方法用于相同数据类型的变量比较
* @param a {any}
* @param b {any}
* @returns {boolean} boolean
*/
export declare function compare(a: any, b: any): Boolean;
/**
* 数组去重
* @param arr {array} 数组
* @returns {array} array
*/
export declare function arrayUnique(arr: Array<any>): Array<any>;
/**
* 获取某个元素下标,元素可以为对象
* @param arr {Array<any>} 传入的数组
* @param obj {any} 需要获取下标的元素
* @returns {number} number 返回数组下标
*/
export declare function arrayIndex(arr: Array<any>, obj: any): number;
/**
* 把数组均分成几等份,并返回一个新的数组
* @param {*} arr 数组
* @param {*} num 几等份
* @returns {Array<any>} Array<any>
*/
export declare function arrayGroup(arr: Array<any>, num: number): Array<any>;
/**
* 获取两个数组的交集
* @param a Array<any>
* @param b Array<any>
* @returns Array[]
*/
export declare function arrayIntersection(a: Array<any>, b: Array<any>): any[];
/**
* 获取两个数组的差集
* @param a Array<any>
* @param b Array<any>
* @returns Array[]
*/
export declare function arrayDiff(a: Array<any>, b: Array<any>): any[];
/**
* 判断是否是安卓设备
* @returns {boolean} boolean
*/
export declare function isAndroid(): boolean;
/**
* 判断是否是苹果设备
* @returns {boolean} boolean
*/
export declare function isApple(): boolean;
/**
* 判断是否是 ios 设备
* @returns {boolean} boolean
*/
export declare function isIos(): boolean;
/**
* 验证是否是电话号码,可以自定义第二个号码
* @param phone {string} 电话号码
* @param second {array} 电话号码的第二个号码规则,可选,例如[3,4,5,7,8]
* @returns {boolean} boolean
*/
export declare function isPhone(phone: string, second: number[]): boolean;
/**
* 判断邮箱是否正确,可以自定义邮箱后缀
* @param email {string} 邮箱
* @param domains {array[string]} 域名 ["163.com"]
* @returns {boolean} boolean
* 默认支持的邮箱:[
"qq.com",
"163.com",
"126.com",
"vip.126.com",
"yeah.net",
"vip.163.com",
"188.com",
"sohu.com",
"sina.cn",
"sina.com",
"gmail.com",
"hotmail.com",
"outlook.com"
]
*/
export declare function isEmail(email: string, domains: string[]): boolean;
/**
* 判断是否为手机端
* @returns {boolean} boolean
*/
export declare function isMobile(): boolean;
/**
* 校验是否为不含端口号的IP地址
* 规则:
* IP格式为xxx.xxx.xxx.xxx,每一项数字取值范围为0-255
* 除0以外其他数字不能以0开头,比如02
* @param ip {string} ip地址,类型为字符串
* @returns {boolean} boolean
*/
export declare function isIP(ip: string): boolean;
/**
* 验证是否是 qq 号码
* 规则:非0开头的5位-13位整数
* @param qq {string} qq号码,字符串
* @returns {boolean} boolean
*/
export declare function isQQNumber(qq: string): boolean;
/**
* 验证是否为第二代居民身份证
* 规则:
* 共18位,最后一位可为X(大小写均可)
* 不能以0开头
* 出生年月日会进行校验:年份只能为18/19/2*开头,月份只能为01-12,日只能为01-31
* @param card {string} 身份证号码
* @returns {boolean} boolean
*/
export declare function isIDCard(card: string): boolean;
/**
* 验证是否为邮政编码
* @param code {string} 邮政编码
* @returns {boolean} boolean
*/
export declare function isPostCode(code: string): boolean;
/**
* 复制到剪切板
* @param str {string} 需要复制到剪贴板的文本
* @returns {Promise} 返回一个 promise 对象
*/
export declare function copy<T>(str: string): Promise<any>;
/**
* 在 head 中创建 css 的 link 标签
* @param url {string} url 地址
*/
export declare function createLink(url: string): void;
/**
* 创建 script 标签
* @param url {string} src的地址
*/
export declare function createScript(url: string): void;
/**
* 基于 window.requestAnimationFrame() 滚动到浏览器顶部
*/
export declare function scrollToTop(): void;
/**
* 获取浏览器滚动条位置
* @returns {string} 数字
*/
export declare function getScrollTop(): number;
/**
* 将键值对拼接成URL带参数
* @param obj {object} 对象
* @param encode {boolean} 是否进行encode,默认false
* @returns {string} 字符串
* @example
* ```
* urlParams({id:10, addr: 'zz'})
* // "id=10&addr=zz"
*
* urlParams({id:10, addr: 'zz'}, true)
* // "id%3D10%26addr%3Dzz"
* ```
*/
export declare function urlParams(obj: any, encode: boolean): string;
/**
* 获得URL中GET请求的参数值
* @param key {string} 参数,可选,如果没有则返回所有的键值对
* @param href {string} 网址,如果没有则默认选取当前网址
* @returns {string | null} 如果有值返回字符串,否则返回 null
*/
export declare function urlGet(key: string, href?: string): string | null;
/**
* 睡眠函数
* @param delay 睡眠时间(毫秒),默认为 0
* @returns {promise} 返回一个 promise 对象
*/
export declare function sleep<T>(delay: number): Promise<T>;
/**
* 获取当前时间戳
* @returns {string} 字符串
*/
export declare function timestamp(): string;
/**
* 时间美化函数
* @param timestamp {string | number} 字符串或者数字
* @returns {string} 返回字符串
* @summary 规则:时间戳与当前时间进行比较
* ```
* 小于1分钟,显示 x分钟前
* 小于1天,显示 x小时前
* 大于1天,小于2天,显示昨天x(小时):x(分钟)
* 大于2天,小于28天,显示x天前
* 否则,显示年-月-日
* ```
*/
export declare function timeBeauty(timestamp: string | number): string;
/**
* 获取某一天
* @param fill {boolean} 布尔值,是否补 0,默认为 true
* @returns {number | string} 返回哪一天
*/
export declare function getDay(fill: boolean): number | string;
/**
* 获取当前月份
* @param {Boolean} fill 布尔值,是否补 0,默认为 true
*/
export declare function getMonth(fill: boolean);
/**
* 获取年份
* @returns {number} 返回哪一年
*/
export declare function getYear(): number;
/**
* 对象转为 formdata
* @param obj {object} 对象
* @returns {FormData} FormData
*/
export declare function json2FormData(obj: any): FormData;
/**
* 用来柯里化的函数
* @param fn {Function}
* @returns {any} any
* @example
* ```
* let abc = function(a, b, c) {
return [a, b, c];
};
const curried = curry(abc);
curried(1)(2)(3);
// [1,2,3]
* ```
*/
export declare function curry(fn: Function): Function;
/**
* 组合函数,从右向左依次执行
* @returns {any} any
* @example
* ```
* function a(name) { return 'test:' + name }
function b(statement) { return statement.toUpperCase() + '!' }
function c(str) { return str.replace(/[cC]/, 'CCCCC') }
compose(a, b, c)('com')
// test:CCCCCOM!
* ```
*/
export declare function compose(): any;
/**
* 管道函数,从左向右依次执行
* @returns {any} any
* @example
* ```
* function a(name) { return 'test:' + name }
function b(statement) { return statement.toUpperCase() + '!' }
function c(str) { return str.replace(/[cC]/, 'CCCCC') }
pipe(a, b, c)('com')
// TEST:CCCCCOM!
* ```
*/
export declare function pipe(): any;