-
Notifications
You must be signed in to change notification settings - Fork 6
/
index.d.ts
427 lines (379 loc) · 10.9 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
/**
* 判断数据类型
* @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;