UNPKG

58.1 kBTypeScriptView Raw
1/**
2 * JavaScript 函数库、工具类
3 */
4declare namespace XEUtils {
5
6 export interface SetupDefaults {
7 treeOptions?: {
8 strict?: boolean;
9 parentKey?: string;
10 key?: string;
11 children?: string;
12 data?: string;
13 [key: string]: any;
14 };
15 formatString?: string;
16 dateDiffRules?: any[][];
17 [key: string]: any;
18 }
19
20 /**
21 * 版本信息
22 */
23 export const VERSION: string
24
25 /**
26 * 设置全局参数
27 * @param options 全局参数
28 */
29 export function setup(options: SetupDefaults): SetupDefaults;
30
31 /**
32 * 将您自己的实用函数扩展到 XEUtils
33 * @param methods 函数集
34 */
35 export function mixin(...methods: {[key: string]: any}[]): void;
36
37 /**
38 * 将一个或多个源对象复制到目标对象中
39 * @param target 目标对象
40 * @param source1 要从中复制属性的源对象
41 */
42 export function assign<T, U>(target: T, source1: U): T & U;
43
44 /**
45 * 将一个或多个源对象复制到目标对象中
46 * @param target 目标对象
47 * @param source1 要从中复制属性的源对象1
48 * @param source2 要从中复制属性的源对象2
49 */
50 export function assign<T, U, V>(target: T, source1: U, source2: V): T & U & V;
51
52 /**
53 * 将一个或多个源对象复制到目标对象中
54 * @param target 目标对象
55 * @param source1 要从中复制属性的源对象1
56 * @param source2 要从中复制属性的源对象2
57 * @param source3 要从中复制属性的源对象3
58 */
59 export function assign<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
60
61 /**
62 * 将一个或多个源对象复制到目标对象中
63 * @param target 目标对象
64 * @param sources 要从中复制属性的一个或多个源对象
65 */
66 export function assign(target: any, ...sources: any[]): any;
67
68 /**
69 * 指定方法后的返回值组成的新对象
70 * @param obj 对象
71 * @param iterate 回调
72 * @param context 上下文
73 */
74 export function objectMap<T, U>(obj: T, iterate: (item: any, key: string, obj: T) => U, context?: any): U;
75 export function objectMap<U>(obj: any, iterate: (item: any, key: string, obj: any) => U, context?: any): U;
76
77 /**
78 * 对象迭代器
79 * @param obj 对象
80 * @param iterate 回调
81 * @param context 上下文
82 */
83 export function objectEach<T>(obj: T, iterate: (item: any, key: string, obj: T) => void, context?: any): void;
84 export function objectEach(obj: any, iterate: (item: any, key: string, obj: any) => void, context?: any): void;
85
86 /**
87 * 对象迭代器,从最后开始迭代
88 * @param obj 对象
89 * @param iterate 回调
90 * @param context 上下文
91 */
92 export function lastObjectEach<T, C>(obj: T, iterate: (this: C, item: any, key: string, obj: T) => void, context?: C): void;
93 export function lastObjectEach<C>(obj: any, iterate: (this: C, item: any, key: string, obj: any) => void, context?: C): void;
94
95 /**
96 * 将一个或多个源对象合并到目标对象中
97 * @param target 目标对象
98 * @param source1 要从中复制属性的源对象1
99 */
100 export function merge<T, U>(target: T, source1: U): T & U;
101 /**
102 * 将一个或多个源对象合并到目标对象中
103 * @param target 目标对象
104 * @param source1 要从中复制属性的源对象1
105 * @param source2 要从中复制属性的源对象2
106 */
107 export function merge<T, U, V>(target: T, source1: U, source2: V): T & U & V;
108
109 /**
110 * 将一个或多个源对象合并到目标对象中
111 * @param target 目标对象
112 * @param source1 要从中复制属性的源对象1
113 * @param source2 要从中复制属性的源对象2
114 * @param source3 要从中复制属性的源对象3
115 */
116 export function merge<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
117
118 /**
119 * 将一个或多个源对象合并到目标对象中
120 * @param target 目标对象
121 * @param sources 要从中复制属性的多个源对象
122 */
123 export function merge(target: any, ...sources: any[]): any;
124
125 /**
126 * 数组去重
127 * @param list 数组
128 */
129 export function uniq<T>(list: T[]): T[];
130
131 /**
132 * 将多个数的值返回唯一的并集数组
133 * @param array 数组
134 */
135 export function union(...array: any[]): any[];
136
137 /**
138 * 被 orderBy 替换
139 * @deprecated
140 */
141 export const sortBy: typeof orderBy
142
143 interface OrderBySortConfs<T, C> {
144 field?: string | ((this: C, item: T, index: number, list: T[]) => any) | null;
145 order?: 'order' | 'desc' | null;
146 }
147
148 export type OrderByFieldConfs<T, C> = null | string | any[][] | OrderBySortConfs<T, C> | (string | OrderBySortConfs<T, C>)[] | ((this: C, item: T, index: number, list: T[]) => any);
149
150 /**
151 * 将数组进行排序
152 * @param array 数组
153 * @param fieldConfs 排序规则
154 * @param context 上下文
155 */
156 export function orderBy<T, C>(array: T[], fieldConfs: OrderByFieldConfs<T, C>, context?: C): T[];
157
158 /**
159 * 将一个数组随机打乱,返回一个新的数组
160 * @param list 数组
161 */
162 export function shuffle<T>(list: T[]): T[];
163
164 /**
165 * 从一个数组中随机返回几个元素
166 * @param array 数组
167 * @example
168 */
169 export function sample<T>(array: T[]): T;
170
171 /**
172 * 从一个数组中随机返回几个元素
173 * @param array 数组
174 * @param number 返回个数
175 * @example
176 */
177 export function sample<T>(array: T[], number: number): T[];
178
179 /**
180 * 对象中的值中的每一项运行给定函数,如果函数对任一项返回 true,则返回 true,否则返回 false
181 * @param list 数组
182 * @param iterate 回调
183 * @param context 上下文
184 */
185 export function some<T>(list: T[], iterate: (item: T, index: number, list: T[]) => boolean, context?: any): boolean;
186
187 /**
188 * 对象中的值中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true,否则返回 false
189 * @param list 数组
190 * @param iterate 回调
191 * @param context 上下文
192 */
193 export function every<T, C>(list: T[], iterate: (this: C, item: T, index: number, list: T[]) => boolean, context?: C): boolean;
194
195 /**
196 * 对象中的值中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true,否则返回 false
197 * @param list 数组
198 * @param iterate 回调
199 * @param context 上下文
200 */
201 export function every<T, C>(list: T, iterate: (this: C, item: any, key: string, list: T) => boolean, context?: C): boolean;
202
203 /**
204 * slice ( array, start, end ) 裁剪 Arguments 或数组 array,从 start 位置开始到 end 结束,但不包括 end 本身的位置
205 * @param array 对象
206 * @param start 迭代器/属性
207 * @param end 上下文
208 */
209 export function slice<T>(array: T[], start: number, end?: number): T[];
210
211 /**
212 * 查找匹配第一条数据
213 * @param array 数组
214 * @param iterate 回调
215 * @param context 上下文
216 */
217 export function filter<T, C>(array: T[], iterate: (this: C, item: T, index: number, list: T[]) => boolean, context?: C): T[];
218
219 /**
220 * 查找匹配第一条数据
221 * @param obj 数组
222 * @param iterate 回调
223 * @param context 上下文
224 */
225 export function filter<T, C>(obj: T, iterate: (this: C, item: any, key: string, list: T) => boolean, context?: C): any;
226
227 /**
228 * 从左至右遍历,匹配最近的一条数据
229 * @param array 数组
230 * @param iterate 回调
231 * @param context 上下文
232 */
233 export function find<T, C>(list: T[], iterate: (this: C, item: T, index: number, list: T[]) => boolean, context?: C): T;
234
235 /**
236 * 从左至右遍历,匹配最近的一条数据
237 * @param obj 对象
238 * @param iterate 回调
239 * @param context 上下文
240 */
241 export function find<T, C>(obj: T, iterate: (this: C, item: any, key: string, obj: T) => boolean, context?: C): any;
242
243 /**
244 * 从右至左遍历,匹配最近的一条数据
245 * @param array 数组
246 * @param iterate 回调
247 * @param context 上下文
248 */
249 export function findLast<T, C>(array: T[], iterate: (this: C, item: T, index: number, list: T[]) => boolean, context?: C): T;
250
251 /**
252 * 从右至左遍历,匹配最近的一条数据
253 * @param obj 对象
254 * @param iterate 回调
255 * @param context 上下文
256 */
257 export function findLast<T, C>(obj: T, iterate: (this: C, item: any, key: string, obj: T) => boolean, context?: C): any;
258
259 /**
260 * 查找匹配第一条数据的键
261 * @param list 数组
262 * @param iterate 回调
263 * @param context 上下文
264 */
265 export function findKey<T, C>(list: T[], iterate: (this: C, item: T, index: number, list: T[]) => boolean, context?: C): number;
266
267 /**
268 * 查找匹配第一条数据的键
269 * @param obj 对象
270 * @param iterate 回调
271 * @param context 上下文
272 */
273 export function findKey<T, C>(obj: T, iterate: (this: C, item: any, key: string, obj: T) => boolean, context?: C): any;
274
275 /**
276 * 判断对象是否包含该值,成功返回 true 否则 false
277 * @param obj 对象
278 * @param val
279 */
280 export function includes(obj: any, val: any): boolean;
281
282 /**
283 * 返回数组第一个索引值
284 * @param list 数组
285 * @param val
286 */
287 export function arrayIndexOf<T>(list: ArrayLike<T>, val: any): number;
288 export function arrayIndexOf(list: any[], val: any): number;
289
290 /**
291 * 从最后开始的索引值,返回数组第一个索引值
292 * @param list 数组
293 * @param val
294 */
295 export function arrayLastIndexOf<T>(list: ArrayLike<T>, val: any): number;
296 export function arrayLastIndexOf(list: any[], val: any): number;
297
298 /**
299 * 指定方法后的返回值组成的新数组
300 * @param list 数组
301 * @param iterate 回调
302 * @param context 上下文
303 */
304 export function map<T, U, C>(list: T[], iterate: (this: C, item: T, index: number, list: T[]) => U, context?: C): U[];
305
306 /**
307 * 接收一个函数作为累加器,数组中的每个值(从左到右)开始合并,最终为一个值
308 * @param array 数组
309 * @param iterate 回调
310 * @param initialValue 默认值
311 * @example
312 */
313 export function reduce<T, U>(array: T[], iterate?: (previous: U, item: T, index: number, list: T[]) => U, initialValue?: U): U;
314
315 /**
316 * 复制数组的一部分到同一数组中的另一个位置,数组大小不变
317 * @param array 数组
318 * @param target 从该位置开始替换数据
319 */
320 export function copyWithin<T>(array: T[], target: number): T[];
321
322 /**
323 * 复制数组的一部分到同一数组中的另一个位置,数组大小不变
324 * @param array 数组
325 * @param target 从该位置开始替换数据
326 * @param start 从该位置开始读取数据,默认为 0 。如果为负值,表示倒数
327 * @param end 到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数
328 */
329 export function copyWithin<T>(array: T[], target: number, start: number, end?: number): T[];
330
331 /**
332 * 将一个数组分割成大小的组。如果数组不能被平均分配,那么最后一块将是剩下的元素
333 * @param array 数组
334 * @param size 每组大小
335 */
336 export function chunk<T>(array: T[], size: number): T[][];
337
338 /**
339 * 将每个数组中相应位置的值合并在一起
340 * @param arrays 多个数组
341 */
342 export function zip(...arrays: any[]): any[];
343
344 /**
345 * 与 zip 相反
346 * @param arrays 数组
347 */
348 export function unzip(arrays: any[]): any[];
349
350 /**
351 * 将每个数组中相应位置的值合并在一起
352 * @param props 键数组
353 * @param values 值数组
354 * @example
355 */
356 export function zipObject(props: any[], values: any[]): any;
357
358 /**
359 * 将一个多维数组铺平
360 * @param list 数组
361 * @param deep 是否深层
362 */
363 export function flatten<T>(list: T[][], deep?: boolean): T[];
364
365 /**
366 * 将一个多维数组铺平
367 * @param list 数组
368 * @param deep 是否深层
369 */
370 export function flatten(list: any[], deep?: boolean): any[];
371
372 /**
373 * 将对象或者伪数组转为新数组
374 * @param list 对象/数组
375 */
376 export function toArray<T>(list: T[]): T[];
377 export function toArray(list: any): any[];
378
379 /**
380 * 判断数组是否包含另一数组
381 * @param array1 数组
382 * @param array2 数组
383 */
384 export function includeArrays(array1: any[], array2: any[]): boolean;
385
386 /**
387 * 获取数组对象中某属性值,返回一个数组
388 * @param array 数组
389 * @param key
390 * @example
391 */
392 export function pluck(array: any[], key: string | number): any[];
393
394 /**
395 * 在list的每个元素上执行方法,任何传递的额外参数都会在调用方法的时候传递给它
396 * @param list 数组
397 * @param path
398 * @example
399 */
400 export function invoke(list: any[], path: string[] | string | ((this: any, ...args: any[]) => any)): any[];
401
402 /**
403 * 数组迭代器
404 * @param list 对象
405 * @param iterate 回调
406 * @param context 上下文
407 */
408 export function arrayEach<T, C>(list: T[] | ArrayLike<T>, iterate: (this: C, item: T, index: number, list: T[]) => void, context?: C): void;
409 export function arrayEach<C>(obj: any[], iterate: (this: C, item: any, index: number, obj: any) => void, context?: C): void;
410
411 /**
412 * 数组迭代器,从最后开始迭代
413 * @param list 对象
414 * @param iterate 回调
415 * @param context 上下文
416 */
417 export function lastArrayEach<T, C>(list: T[], iterate: (this: C, item: T, index: number, list: T[]) => void, context?: C): void;
418 export function lastArrayEach<T, C>(list: T, iterate: (this: C, item: any, index: number, list: T) => void, context?: C): void;
419 export function lastArrayEach<C>(list: any[], iterate: (this: C, item: any, index: number, list: any[]) => void, context?: C): void;
420 export function lastArrayEach<C>(list: any, iterate: (this: C, item: any, index: number, list: any) => void, context?: C): void;
421
422 export interface ToArrayTreeOptions<T> {
423 strict?: boolean;
424 key?: string;
425 parentKey?: string;
426 children?: string;
427 mapChildren?: string;
428 sortKey?: OrderByFieldConfs<T, any>;
429 data?: string;
430 /**
431 * 已废弃,被 sortKey: { ...,order: 'desc' } 替换
432 * @deprecated
433 */
434 reverse?: boolean;
435 }
436
437 /**
438 * 将一个带层级的数据列表转成树结构
439 * @param {Array} list 数组
440 * @param {Object} options {strict: false, parentKey: 'parentId', key: 'id', children: 'children', data: 'data'}
441 */
442 export function toArrayTree<T>(list: T[], options?: ToArrayTreeOptions<T>): T[];
443 export function toArrayTree(list: any, options?: ToArrayTreeOptions<any>): any[];
444
445 export interface ToTreeArrayOptions {
446 children?: string;
447 data?: string;
448 clear?: boolean;
449 }
450
451 /**
452 * 将一个树结构转成数组列表
453 * @param {Array} list 数组
454 * @param {Object} options { children: 'children', data: 'data', clear: false }
455 */
456 export function toTreeArray<T>(list: T[], options?: ToTreeArrayOptions): T[];
457 export function toTreeArray(list: any, options?: ToTreeArrayOptions): any[];
458
459 export interface FindTerrResult<T = any> {
460 index: number;
461 item: T;
462 path: Array<string>;
463 items: T[];
464 parent: T;
465 nodes: T[];
466 }
467
468 export interface FindTreeOptions {
469 children?: string;
470 }
471
472 /**
473 * 从树结构中查找匹配第一条数据的键、值、路径
474 * @param {Object} list 数组
475 * @param {Function} iterate(item, index, items, path, parent, nodes) 回调
476 * @param {Object} options {children: 'children'}
477 * @param {Object} context 上下文
478 */
479 export function findTree<T, C>(list: T[], iterate: (this: C, item: T, index: number, items: T[], path: string[], parent: T, nodes: T[]) => boolean, options?: FindTreeOptions, context?: C): FindTerrResult<T>;
480
481 export interface EachTreeOptions {
482 children?: string;
483 }
484
485 /**
486 * 从树结构中遍历数据的键、值、路径
487 * @param {Object} list 数组
488 * @param {Function} iterate(item, index, items, path, parent, nodes) 回调
489 * @param {Object} options {children: 'children'}
490 * @param {Object} context 上下文
491 */
492 export function eachTree<T, C>(list: T[], iterate: (this: C, item: T, index: number, items: T[], path: string[], parent: T, nodes: T[]) => void, options?: EachTreeOptions, context?: C): void;
493 export function eachTree<C>(list: any[], iterate: (this: C, item: any, index: number, items: any[], path: string[], parent: any, nodes: any[]) => void, options?: EachTreeOptions, context?: C): void;
494 export function eachTree<C>(list: any, iterate: (this: C, item: any, index: number, items: any, path: string[], parent: any, nodes: any) => void, options?: EachTreeOptions, context?: C): void;
495
496 export interface MapTreeOptions {
497 children?: string;
498 mapChildren?: string;
499 }
500
501 /**
502 * 从树结构中指定方法后的返回值组成的新数组
503 * @param {Object} obj 对象/数组
504 * @param {Function} iterate(item, index, items, path, parent, nodes) 回调
505 * @param {Object} options {children: 'children', mapChildren: 'children}
506 * @param {Object} context 上下文
507 */
508 export function mapTree<T, U, C>(array: T[], iterate: (this: C, item: T, index: number, items: T[], path: string[], parent: T, nodes: T[]) => U, options?: MapTreeOptions, context?: C): U[];
509 export function mapTree<U, C>(array: any[], iterate: (this: C, item: any, index: number, items: any[], path: string[], parent: any, nodes: any[]) => U, options?: MapTreeOptions, context?: C): U[];
510 export function mapTree<U, C>(array: any, iterate: (this: C, item: any, index: number, items: any, path: string[], parent: any, nodes: any) => U, options?: MapTreeOptions, context?: C): U[];
511
512 export interface FilterTreeOptions {
513 children?: string;
514 }
515
516 /**
517 * 从树结构中根据回调过滤数据
518 * @param {Object} list 数组
519 * @param {Function} iterate(item, index, items, path, parent) 回调
520 * @param {Object} options {children: 'children'}
521 * @param {Object} context 上下文
522 */
523 export function filterTree<T, C>(list: T[], iterate: (this: C, item: T, index: number, items: T[], path: string[], parent: T, nodes: T[]) => boolean, options?: FilterTreeOptions, context?: C): T[];
524
525 export interface SearchTreeOptions {
526 children?: string;
527 mapChildren?: string;
528 original?: boolean;
529 data?: string;
530 }
531
532 /**
533 * 从树结构中根据回调查找数据
534 * @param {Object} list 对象/数组
535 * @param {Function} iterate(item, index, items, path, parent, nodes) 回调
536 * @param {Object} options {children: 'children'}
537 * @param {Object} context 上下文
538 */
539 export function searchTree<T>(list: T[], iterate: (item: T, index: number, items: T[], path: string[], parent: T, nodes: T[]) => boolean, options?: SearchTreeOptions, context?: any): T[];
540 export function searchTree(list: any[], iterate: (item: any, index: number, items: any[], path: string[], parent: any, nodes: any[]) => boolean, options?: SearchTreeOptions, context?: any): any[];
541 export function searchTree(list: any, iterate: (item: any, index: number, items: any, path: string, parent: any, nodes: any) => boolean, options?: SearchTreeOptions, context?: any): any[];
542
543 /**
544 * 判断对象自身属性中是否具有指定的属性
545 * @param obj 对象
546 * @param key 键值
547 */
548 export function hasOwnProp(obj: any, key: string | number): boolean;
549
550 /**
551 * 判断是否 undefinednull
552 * @param obj 对象
553 */
554 export function eqNull(obj: any): boolean;
555
556 /**
557 * 判断是否非数值
558 * @param val
559 */
560 export function isNaN(val: any): boolean;
561
562 /**
563 * 判断是否为有限数值
564 * @param val
565 */
566 export function isFinite(val: any): val is number;
567
568 /**
569 * 判断 Undefined
570 * @param val
571 */
572 export function isUndefined(val: any): val is undefined;
573
574 /**
575 * 判断是否数组
576 * @param val
577 */
578 export function isArray(val: any): val is any[];
579
580 /**
581 * 判断是否小数
582 * @param val
583 */
584 export function isFloat(val: any): val is number;
585
586 /**
587 * 判断是否整数
588 * @param val
589 */
590 export function isInteger(val: any): val is number;
591
592 /**
593 * 判断是否方法
594 * @param val
595 */
596 export function isFunction(val: any): val is Function;
597
598 /**
599 * 判断是否 Boolean 对象
600 * @param val
601 */
602 export function isBoolean(val: any): val is boolean;
603
604 /**
605 * 判断是否String对象
606 * @param val
607 */
608 export function isString(val: any): val is string;
609
610 /**
611 * 判断是否 Number 对象
612 * @param val
613 */
614 export function isNumber(val: any): val is number;
615
616 /**
617 * 判断是否 RegExp 对象
618 * @param val
619 */
620 export function isRegExp(val: any): val is RegExp;
621
622 /**
623 * 判断是否 Object 对象
624 * @param val
625 */
626 export function isObject(val: any): val is object;
627
628 /**
629 * 判断是否是一个对象
630 * @param val
631 */
632 export function isPlainObject(val: any): val is object;
633
634 /**
635 * 判断是否 Date 对象
636 * @param val
637 */
638 export function isDate(val: any): val is Date;
639
640 /**
641 * 判断是否 Error 对象
642 * @param val
643 */
644 export function isError(val: any): val is Error;
645
646 /**
647 * 判断是否 TypeError 对象
648 * @param val
649 */
650 export function isTypeError(val: any): val is TypeError;
651
652 /**
653 * 判断是否为空对象
654 * @param val
655 */
656 export function isEmpty(val: any): boolean;
657
658 /**
659 * 判断是否为 Null
660 * @param val
661 */
662 export function isNull(val: any): val is null;
663
664 /**
665 * 判断是否 Symbol 对象
666 * @param val
667 */
668 export function isSymbol(val: any): val is symbol;
669
670 /**
671 * 判断是否 Arguments 对象
672 * @param val
673 */
674 export function isArguments(val: any): val is IArguments;
675
676 /**
677 * 判断是否 Element 对象
678 * @param val
679 */
680 export function isElement(val: any): val is Element;
681
682 /**
683 * 判断是否 Document 对象
684 * @param val
685 */
686 export function isDocument(val: any): val is Document;
687
688 /**
689 * 判断是否 Window 对象
690 * @param val
691 */
692 export function isWindow(val: any): val is Window;
693
694 /**
695 * 判断是否 FormData 对象
696 * @param val
697 */
698 export function isFormData(val: any): val is FormData;
699
700 /**
701 * 判断是否 Map 对象
702 * @param val
703 */
704 export function isMap(val: any): val is Map<any, any>;
705
706 /**
707 * 判断是否 WeakMap 对象
708 * @param val
709 */
710 export function isWeakMap(val: any): val is WeakMap<any, any>;
711
712 /**
713 * 判断是否 Set 对象
714 * @param val
715 */
716 export function isSet(val: any): val is Set<any>;
717
718 /**
719 * 判断是否 WeakSet 对象
720 * @param val
721 */
722 export function isWeakSet(val: any): val is WeakSet<any>;
723
724 /**
725 * 判断是否闰年
726 * @param date 日期
727 */
728 export function isLeapYear(date: Date | number | string): boolean;
729 export function isLeapYear(date: any): boolean;
730
731 /**
732 * 判断属性中的键和值是否包含在对象中
733 * @param obj 对象
734 * @param source
735 */
736 export function isMatch(obj: any, source: any): boolean;
737
738 /**
739 * 深度比较两个对象之间的值是否相等
740 * @param obj1 值1
741 * @param obj2 值2
742 */
743 export function isEqual(obj1: any, obj2: any): boolean;
744
745 /**
746 * 深度比较两个对象之间的值是否相等,使用自定义比较函数
747 * @param obj1 值1
748 * @param obj2 值2
749 */
750 export function isEqualWith(obj1: any, obj2: any): boolean;
751
752 /**
753 * 深度比较两个对象之间的值是否相等,使用自定义比较函数
754 * @param obj1 值1
755 * @param obj2 值2
756 * @param func 自定义函数
757 */
758 export function isEqualWith<T, U>(obj1: T, obj2: U, func: (val1: any, val2: any, key: any, obj1: T, obj2: U) => any): boolean;
759
760 /**
761 * 获取对象类型
762 * @param obj 对象
763 */
764 export function getType(obj: any): string;
765
766 /**
767 * 获取一个全局唯一标识
768 * @param prefix 自定义前缀
769 */
770 export function uniqueId(prefix?: string | number | null): string;
771
772 /**
773 * 返回对象的长度
774 * @param obj 对象
775 */
776 export function getSize(obj: any): number;
777
778 /**
779 * 返回对象第一个索引值
780 * @param obj 对象
781 * @param val
782 */
783 export function indexOf(obj: any, val: any): number;
784
785 /**
786 * 从最后开始的索引值,返回对象第一个索引值
787 * @param obj 对象
788 * @param val
789 */
790 export function lastIndexOf(obj: any[], val: any): number;
791 export function lastIndexOf(obj: any, val: any): number;
792
793 /**
794 * 返回对象第一个索引值
795 * @param list 数组
796 * @param iterate 迭代器
797 * @param context 上下文
798 */
799 export function findIndexOf<T, C>(list: T[], iterate: (this: C, item: T, index: any, obj: T[]) => boolean, context?: C): number;
800
801 /**
802 * 返回对象第一个索引值
803 * @param obj 对象
804 * @param iterate 迭代器
805 * @param context 上下文
806 */
807 export function findIndexOf<T, C>(obj: T, iterate: (this: C, item: any, key: string, obj: T) => boolean, context?: C): number;
808
809 /**
810 * 从最后开始的索引值,返回对象第一个索引值
811 * @param list 数组
812 * @param iterate 迭代器
813 * @param context 上下文
814 */
815 export function findLastIndexOf<T, C>(list: T[], iterate: (this: C, item: T, index: number, list: T[]) => boolean, context?: C): number;
816
817 /**
818 * 从最后开始的索引值,返回对象第一个索引值
819 * @param obj 对象
820 * @param iterate 迭代器
821 * @param context 上下文
822 */
823 export function findLastIndexOf<C>(obj: any, iterate: (this: C, item: any, key: string, obj: any) => boolean, context?: C): number;
824
825 /**
826 * 字符串转 JSON
827 * @param str 字符串
828 */
829 export function toStringJSON(str: string | null): any;
830 export function toStringJSON(str: any): any;
831
832 /**
833 * JSON 转字符串
834 * @param obj 对象
835 */
836 export function toJSONString(obj: any): string;
837
838 /**
839 * 获取对象所有属性
840 * @param obj 对象
841 */
842 export function keys(obj: any): string[];
843
844 /**
845 * 获取对象所有值
846 * @param obj 对象
847 */
848 export function values<T>(list: T[]): T[];
849 export function values(obj: any): any[];
850
851 /**
852 * 获取对象所有属性、值
853 * @param obj 对象
854 */
855 export function entries(obj: any): any[];
856
857 /**
858 * 根据 keys 过滤指定的属性值,返回一个新的对象
859 * @param obj 对象
860 * @param array 数组或字符串或方法
861 */
862 export function pick(obj: any, array: string[]): any;
863
864 /**
865 * 根据 keys 排除指定的属性值,返回一个新的对象
866 * @param obj 对象
867 * @param array 数组或字符串或方法
868 */
869 export function omit(obj: any, array: string[]): any;
870
871 /**
872 * 获取对象第一个值
873 * @param list 数组
874 */
875 export function first<T>(list: T[] | ArrayLike<T>): T;
876 export function first(obj: any): any;
877
878 /**
879 * 获取对象最后一个值
880 * @param list 数组
881 */
882 export function last<T>(list: T[] | ArrayLike<T>): T;
883
884 /**
885 * 获取对象最后一个值
886 * @param obj 对象
887 */
888 export function last(obj: any): any;
889
890 /**
891 * 通用迭代器
892 * @param list 对象
893 * @param iterate 回调
894 * @param context 上下文
895 */
896 export function each<T, C>(list: T[] | ArrayLike<T>, iterate: (this: C, item: T, index: number, list: T[]) => void, context?: CSSKeyframeRule): void;
897
898 /**
899 * 通用迭代器
900 * @param obj 对象
901 * @param iterate 回调
902 * @param context 上下文
903 */
904 export function each<T, C>(obj: T, iterate: (this: C, item: any, key: string, obj: T) => void, context?: C): void;
905
906 /**
907 * 已废弃,被 some, every 替换
908 * @deprecated
909 */
910 export function forOf<C>(obj: any, iterate: (this: C, item: any, index: any, obj: any) => boolean, context?: C): void;
911
912 /**
913 * 已废弃
914 * @deprecated
915 */
916 export function lastForOf<C>(obj: any, iterate: (this: C, item: any, index: any, obj: any) => boolean, context?: C): void;
917
918 /**
919 * 通用迭代器,从最后开始迭代
920 * @param list 对象
921 * @param iterate 回调
922 * @param context 上下文
923 */
924 export function lastEach<T, C>(list: T[], iterate: (this: C, item: T, index: number, list: T) => void, context?: C): void;
925 export function lastEach<T, C>(obj: T, iterate: (this: C, item: any, key: string, obj: T) => void, context?: C): void;
926 export function lastEach<C>(obj: any[], iterate: (this: C, item: any, key: string, obj: any[]) => void, context?: C): void;
927 export function lastEach<C>(obj: any, iterate: (this: C, item: any, key: string, obj: any) => void, context?: C): void;
928
929 /**
930 * 检查键、路径是否是该对象的属性
931 * @param obj 对象
932 * @param property 键、路径
933 */
934 export function has(obj: any, property: string | string[]): boolean;
935
936 /**
937 * 获取对象的属性的值,如果值为 undefined,则返回默认值
938 * @param obj 对象
939 * @param property 键、路径
940 * @param defaultValue 默认值
941 */
942 export function get<T extends object, K extends keyof T>(obj: T, property: string | string[], defaultValue?: any): T[K];
943 export function get(obj: any, property: string | string[], defaultValue?: any): any;
944
945 /**
946 * 设置对象属性上的值。如果属性不存在则创建它
947 * @param obj 对象
948 * @param property 键、路径
949 * @param value
950 */
951 export function set(obj: any, property: string | string[], value: any): any;
952
953 /**
954 * 集合分组,默认使用键值分组,如果有 iterate 则使用结果进行分组
955 * @param list 对象
956 * @param iterate 回调/对象属性
957 * @param context 上下文
958 */
959 export function groupBy<T, C>(list: T[], iterate: string | number | ((this: C, item: T, index: number, obj: T) => string | number), context?: C): { [key: string]: T[] };
960
961 /**
962 * 集合分组,默认使用键值分组,如果有 iterate 则使用结果进行分组
963 * @param obj 对象
964 * @param iterate 回调/对象属性
965 * @param context 上下文
966 */
967 export function groupBy<T, C>(obj: T, iterate: string | number | ((this: C, item: any, key: string, obj: T) => string | number), context?: C): { [key: string]: any[] };
968
969 /**
970 * 集合分组统计,返回各组中对象的数量统计
971 * @param list 对象
972 * @param iterate 回调/属性
973 * @param context 上下文
974 */
975 export function countBy<T, C>(list: T[], iterate: (this: C, item: T, index: number, list: T[]) => string | number, context?: C): { [key: string]: number };
976
977 /**
978 * 集合分组统计,返回各组中对象的数量统计
979 * @param obj 对象
980 * @param iterate 回调/属性
981 * @param context 上下文
982 */
983 export function countBy<T, C>(obj: T, iterate: (this: C, item: any, key: string, obj: T) => string | number, context?: C): { [key: string]: number };
984
985 /**
986 * 浅拷贝/深拷贝
987 * @param obj 对象
988 */
989 export function clone<T>(obj: T): T;
990
991 /**
992 * 浅拷贝/深拷贝
993 * @param obj 对象
994 * @param deep 是否深拷贝
995 */
996 export function clone<T>(obj: T, deep: boolean): T;
997
998 /**
999 * 清空对象; defs如果不传(清空所有属性)、如果传对象(清空并继承)、如果传值(给所有赋值)
1000 * @param obj 对象
1001 */
1002 export function clear<T>(obj: T): T;
1003
1004 /**
1005 * 清空对象; defs如果不传(清空所有属性)、如果传对象(清空并继承)、如果传值(给所有赋值)
1006 * @param obj 对象
1007 * @param defs 默认值
1008 */
1009 export function clear<T>(obj: T, defs: any): T;
1010
1011 /**
1012 * 清空对象; defs如果不传(清空所有属性)、如果传对象(清空并继承)、如果传值(给所有赋值)
1013 * @param obj 对象
1014 * @param defs 默认值
1015 * @param assigns
1016 */
1017 export function clear<T, U>(obj: T, defs: any, assigns: U): T & U;
1018
1019 /**
1020 * 移除对象属性
1021 * @param list 对象
1022 * @param iterate 迭代器/值
1023 */
1024 export function remove<T, C>(list: T[], iterate: number | string | ((this: C, item: T, index: number, list: T[]) => boolean), context?: C): T[];
1025
1026 /**
1027 * 移除对象属性
1028 * @param obj 对象
1029 * @param iterate 迭代器/值
1030 */
1031 export function remove<C>(obj: any, iterate: number | string | ((this: C, item: any, key: string, obj: any) => boolean), context?: C): any;
1032
1033 /**
1034 * 序号列表生成函数
1035 * @param start 起始值
1036 * @param stop 结束值
1037 */
1038 export function range(start: number, stop: number): number[];
1039
1040 /**
1041 * 序号列表生成函数
1042 * @param start 起始值
1043 * @param stop 结束值
1044 * @param step 自增值
1045 */
1046 export function range(start: number, stop: number, step: number): number[];
1047
1048 /**
1049 * 将一个或者多个对象值解构到目标对象
1050 * @param obj 对象
1051 * @param target 目标
1052 */
1053 export function destructuring<T>(obj: T, ...target: any[]): T;
1054
1055 /**
1056 * 获取一个指定范围内随机数
1057 * @param min 最小值
1058 * @param max 最大值
1059 */
1060 export function random(min: number, max: number): number;
1061
1062 /**
1063 * 获取最小值
1064 * @param array 数组
1065 * @param iterate 回调/属性
1066 */
1067 export function min<T, U>(list: T[], iterate: string | number | ((item: T, index: number, list: T[]) => U)): T | U;
1068
1069 /**
1070 * 获取最大值
1071 * @param list 数组
1072 * @param iterate 回调/属性
1073 */
1074 export function max<T, U>(list: T[], iterate: string | number | ((item: T, index: number, list: T[]) => U)): T | U;
1075
1076 export interface CommafyOptions {
1077 /**
1078 * 分割位数,默认3
1079 */
1080 spaceNumber?: number;
1081 /**
1082 * 分隔符,默认','
1083 */
1084 separator?: string;
1085 /**
1086 * 只对 number 类型有效,小数位数,默认null
1087 */
1088 digits?: number;
1089 /**
1090 * 只对 number 类型有效,四舍五入,默认true
1091 */
1092 round?: boolean;
1093 /**
1094 * 只对 number 类型有效,向上舍入
1095 */
1096 ceil?: boolean;
1097 /**
1098 * 只对 number 类型有效,向下舍入
1099 */
1100 floor?: boolean;
1101 }
1102
1103 /**
1104 * 数值千分位分隔符、小数点
1105 * @param num 数值/字符串
1106 * @param options 可选参数
1107 */
1108 export function commafy(num: string | number, options?: CommafyOptions): string;
1109
1110 /**
1111 * 对数字进行四舍五入
1112 * @param num 数值/字符串
1113 * @param digits 小数保留位数
1114 */
1115 export function round(num: number, digits?: number): number;
1116 export function round(num: any, digits?: number): number;
1117
1118 /**
1119 * 将数值向上舍入
1120 * @param num 数值/字符串
1121 */
1122 export function ceil(num: string | number): number;
1123
1124 /**
1125 * 将数值向上舍入
1126 * @param num 数值/字符串
1127 * @param digits 小数保留位数
1128 */
1129 export function ceil(num: string | number, digits: number): number;
1130
1131 /**
1132 * 将数值向下舍入
1133 * @param num 数值/字符串
1134 * @param digits 小数保留位数
1135 */
1136 export function floor(num: string | number, digits?: number): number;
1137
1138 /**
1139 * 将数值四舍五入并格式化为固定小数位的字符串
1140 * @param num 数值/字符串
1141 * @param digits 小数保留位数
1142 */
1143 export function toFixed(num: number | string | null, digits?: number): string;
1144 export function toFixed(num: any, digits?: number): string;
1145
1146 /**
1147 * 转数值
1148 * @param num 数值/字符串
1149 */
1150 export function toNumber(num: number | string | null): number;
1151 export function toNumber(num: any): number;
1152
1153 /**
1154 * 数值转字符串,科学计数转字符串
1155 * @param num 数值
1156 */
1157 export function toNumberString(num: number | string | null): string;
1158 export function toNumberString(num: any): string;
1159
1160 /**
1161 * 转整数
1162 * @param num 数值/字符串
1163 */
1164 export function toInteger(num: number | string | null): number;
1165 export function toInteger(num: any): number;
1166
1167 /**
1168 * 加法运算
1169 * @param num1 数值1
1170 * @param num2 数值2
1171 */
1172 export function add(num1: number, num2: number): number;
1173
1174 /**
1175 * 减法运算
1176 * @param num1 数值1
1177 * @param num2 数值2
1178 */
1179 export function subtract(num1: number, num2: number): number;
1180 export function subtract(num1: any, num2: any): number;
1181
1182 /**
1183 * 乘法运算
1184 * @param num1 数值1
1185 * @param num2 数值2
1186 */
1187 export function multiply(num1: number, num2: number): number;
1188 export function multiply(num1: any, num2: any): number;
1189
1190 /**
1191 * 除法运算
1192 * @param num1 数值1
1193 * @param num2 数值2
1194 */
1195 export function divide(num1: number, num2: number): number;
1196
1197 /**
1198 * 求和函数,将数值相加
1199 * @param obj 对象/数组
1200 * @param iterate 回调
1201 * @param context 上下文
1202 */
1203 export function sum<T, C>(obj: T[], iterate?: string | number | ((this: C, item: T, index: number, list: T[]) => number), context?: C): number;
1204
1205 /**
1206 * 求平均值函数
1207 * @param array 对象/数组
1208 * @param iterate 回调
1209 * @param context 上下文
1210 */
1211 export function mean<T>(obj: T[], iterate?: string | number | ((item: T, index: number, list: T[]) => any), context?: any): number;
1212
1213 /**
1214 * 返回当前时间戳
1215 */
1216 export function now(): number;
1217
1218 /**
1219 * 将日期转为时间戳
1220 * @param date 字符串/日期/时间戳
1221 * @param format 解析格式 yyyy MM dd HH mm ss SSS
1222 */
1223 export function timestamp(date: string | Date | number, format?: string | null): number;
1224 export function timestamp(date: any, format?: string | null): number;
1225
1226 /**
1227 * 判断是否有效的Date对象
1228 * @param val
1229 */
1230 export function isValidDate(val: any): val is Date;
1231
1232 /**
1233 * 判断两个日期是否相同
1234 * @param date1 日期
1235 * @param date2 日期
1236 * @param format 对比格式
1237 */
1238 export function isDateSame(date1: Date | number | string, date2: Date | number | string, format?: string | null): boolean;
1239 export function isDateSame(date1: any, date2: any, format?: string | null): boolean;
1240
1241 /**
1242 * 任意格式字符串转为日期
1243 * @param str 字符串/日期/时间戳
1244 */
1245 export function toStringDate(str: string | Date | number | null): Date;
1246 export function toStringDate(str: any): Date;
1247
1248 /**
1249 * 任意格式字符串转为日期
1250 * @param str 字符串/日期/时间戳
1251 * @param format 解析格式 yyyy MM dd HH mm ss SSS
1252 */
1253 export function toStringDate(str: string | Date | number | null, format: string | null): Date;
1254 export function toStringDate(str: any, format: string | null): Date;
1255
1256 export interface ToDateStringOptions {
1257 /**
1258 * 自定义格式化模板
1259 * {
1260 * formats: {
1261 * q: ['日', '一', '二', '三', '四', '五', '六'],
1262 * E: function (value, match, date) { return '三' }
1263 * }
1264 * }
1265 */
1266 formats?: any;
1267 }
1268
1269 /**
1270 * 日期格式化为任意格式字符串,转义符号 []
1271 * @param date 字符串/日期/时间戳
1272 */
1273 export function toDateString(date: string | Date | number): string;
1274 export function toDateString(date: any): string;
1275
1276 /**
1277 * 日期格式化为任意格式字符串,转义符号 []
1278 * @param date 字符串/日期/时间戳
1279 * @param format 格式化 默认:yyyy-MM-dd HH:mm:ss.SSS
1280 */
1281 export function toDateString(date: string | Date | number, format: string | null): string;
1282 export function toDateString(date: any, format: string | null): string;
1283
1284 /**
1285 * 日期格式化为任意格式字符串,转义符号 []
1286 * @param date 字符串/日期/时间戳
1287 * @param format 格式化 默认:yyyy-MM-dd HH:mm:ss.SSS
1288 * @param options 可选参数
1289 */
1290 export function toDateString(date: string | Date | number, format: string | null, options: ToDateStringOptions): string;
1291 export function toDateString(date: any, format: string | null, options: ToDateStringOptions): string;
1292
1293 /**
1294 * 返回前几年或后几年的日期
1295 * @param date 字符串/日期/时间戳
1296 * @param year 年(默认当前年)、前几个年(数值)、后几个年(数值)
1297 */
1298 export function getWhatYear(date: string | Date | number, offset: number): Date;
1299
1300 /**
1301 * 返回前几年或后几年的日期,可以指定年初(first)、年末(last)、月份(0~11),默认当前
1302 * @param date 字符串/日期/时间戳
1303 * @param year 年(默认当前年)、前几个年(数值)、后几个年(数值)
1304 * @param month 获取哪月:年初(first)、年末(last)、指定月份(0-11)
1305 */
1306 export function getWhatYear(date: string | Date | number, offset: number, month: number | 'first' | 'last'): Date;
1307
1308 /**
1309 * 返回前几季度或后几季度的日期
1310 * @param date 字符串/日期/时间戳
1311 * @param offset 季度偏移量(默认0)、前几个季度、后几个季度
1312 */
1313 export function getWhatQuarter(date: string | Date | number, offset: number): Date;
1314
1315 /**
1316 * 返回前几季度或后几季度的日期,可以指定月初(first)、月末(last)、天数,默认当前
1317 * @param date 字符串/日期/时间戳
1318 * @param offset 季度偏移量(默认当前季度)、前几个季度、后几个季度
1319 * @param day 获取哪天:月初(first)、月末(last)、指定天数(数值)
1320 */
1321 export function getWhatQuarter(date: string | Date | number, offset: number, day: number | 'first' | 'last'): Date;
1322
1323 /**
1324 * 返回前几月或后几月的日期
1325 * @param date 字符串/日期/时间戳
1326 * @param offset 月偏移量(默认0)、前几个月、后几个月
1327 */
1328 export function getWhatMonth(date: string | Date | number, offset: number): Date;
1329
1330 /**
1331 * 返回前几月或后几月的日期,可以指定月初(first)、月末(last)、天数,默认当前
1332 * @param date 字符串/日期/时间戳
1333 * @param offset 月偏移量(默认默认当前月)、前几个月、后几个月
1334 * @param day 获取哪天:月初(first)、月末(last)、指定天数(数值)
1335 */
1336 export function getWhatMonth(date: string | Date | number, offset: number, day: number | 'first' | 'last'): Date;
1337
1338 /**
1339 * 返回前几周或后几周的日期
1340 * @param date 字符串/日期/时间戳
1341 * @param offset 周偏移量(默认当前周)、前几周、后几周
1342 */
1343 export function getWhatWeek(date: string | Date | number, offset: number): Date;
1344
1345 /**
1346 * 返回前几周或后几周的日期,可以指定星期几(0~6),默认当前
1347 * @param date 字符串/日期/时间戳
1348 * @param offset 周偏移量(默认当前周)、前几周、后几周
1349 * @param day 星期天(0)、星期一(1)、星期二(2)、星期三(3)、星期四(4)、星期五(5)、星期六(6)
1350 */
1351 export function getWhatWeek(date: string | Date | number, offset: number, day: number): Date;
1352
1353 /**
1354 * 返回前几天或后几天的日期
1355 * @param date 字符串/日期/时间戳
1356 * @param offset 天偏移量(默认0)、前几天、后几天
1357 */
1358 export function getWhatDay(date: string | Date | number, offset: number): Date;
1359
1360 /**
1361 * 返回前几天或后几天的日期
1362 * @param date 字符串/日期/时间戳
1363 * @param offset 天偏移量(默认0)、前几天、后几天
1364 * @param mode 获取时间:日初(first)、日末(last)
1365 */
1366 export function getWhatDay(date: string | Date | number, offset: number, mode: 'first' | 'last'): Date;
1367
1368 /**
1369 * 返回某个年份的第几天
1370 * @param date 字符串/日期/时间戳
1371 */
1372 export function getYearDay(date: string | Date | number): number;
1373
1374 /**
1375 * 返回某个年份的第几周
1376 * @param date 字符串/日期/时间戳
1377 */
1378 export function getYearWeek(date: string | Date | number): number;
1379
1380 /**
1381 * 返回某个月份的第几周
1382 * @param date 字符串/日期/时间戳
1383 */
1384 export function getMonthWeek(date: string | Date | number): number;
1385
1386 /**
1387 * 返回某个年份的天数,可以指定前几个年或后几个年,默认当前
1388 * @param date 字符串/日期/时间戳
1389 * @param offset 年偏移量(默认0)、前几个年、后几个年
1390 */
1391 export function getDayOfYear(date: string | Date | number, offset: number): Date;
1392
1393 /**
1394 * 返回某个月份的天数,可以指定前几个月或后几个月,默认当前
1395 * @param date 字符串/日期/时间戳
1396 * @param offset 月偏移量(默认0)、前几个月、后几个月
1397 */
1398 export function getDayOfMonth(date: string | Date | number, offset: number): number;
1399
1400 export interface DateDiffResult {
1401 /**
1402 * 是否计算完成(如果结束日期小于开始日期 donefasle
1403 */
1404 done: boolean;
1405 /**
1406 * 相差多少毫秒
1407 */
1408 time: number;
1409 /**
1410 * 年
1411 */
1412 yyyy: number;
1413 /**
1414 * 月
1415 */
1416 MM: number;
1417 /**
1418 * 日
1419 */
1420 dd: number;
1421 /**
1422 * 时
1423 */
1424 HH: number;
1425 /**
1426 * 分
1427 */
1428 mm: number;
1429 /**
1430 * 秒
1431 */
1432 ss: number;
1433 /**
1434 * 毫秒
1435 */
1436 S: number;
1437 }
1438
1439 /**
1440 * 返回两个日期之间差距,如果结束日期小于开始日期 donefasle
1441 * @param startDate 开始日期
1442 * @param endDate 结束日期或当期日期
1443 */
1444 export function getDateDiff(startDate: string | Date | number, endDate: string | Date | number): DateDiffResult;
1445
1446 /**
1447 * 返回两个日期之间差距,如果结束日期小于开始日期 donefasle
1448 * @param startDate 开始日期
1449 * @param endDate 结束日期或当期日期
1450 * @param rules 自定义计算规则
1451 */
1452 export function getDateDiff(startDate: string | Date | number, endDate: string | Date | number, rules?: any[][]): DateDiffResult;
1453
1454 /**
1455 * 去除字符串左右两边的空格
1456 * @param str 字符串
1457 */
1458 export function trim(str: string): string;
1459 export function trim(str: any): string;
1460
1461 /**
1462 * 去除字符串左边的空格
1463 * @param str 字符串
1464 */
1465 export function trimLeft(str: string): string;
1466 export function trimLeft(str: any): string;
1467
1468 /**
1469 * 去除字符串右边的空格
1470 * @param str 字符串
1471 */
1472 export function trimRight(str: string): string;
1473 export function trimRight(str: any): string;
1474
1475 /**
1476 * 转义HTML字符串,替换&, <, >, ", ', \`字符
1477 * @param str 字符串
1478 */
1479 export function escape(str: string): string;
1480
1481 /**
1482 * 反转 escape
1483 * @param str 字符串
1484 */
1485 export function unescape(str: string): string;
1486 export function unescape(str: any): string;
1487
1488 /**
1489 * 将带字符串转成驼峰字符串,例如: project-name 转为 projectName
1490 * @param str 字符串
1491 */
1492 export function camelCase(str: string): string;
1493
1494 /**
1495 * 将带驼峰字符串转成字符串,例如: projectName 转为 project-name
1496 * @param str 字符串
1497 */
1498 export function kebabCase(str: string): string;
1499 export function kebabCase(str: any): string;
1500
1501 /**
1502 * 将字符串重复 n
1503 * @param str 字符串
1504 * @param count 次数
1505 */
1506 export function repeat(str: string, count: number): string;
1507 export function repeat(str: any, count: number): string;
1508
1509 /**
1510 * 用指定字符从前面开始补全字符串
1511 * @param str 字符串
1512 * @param targetLength 结果长度
1513 * @param padString 补全字符
1514 */
1515 export function padStart(str: string, targetLength: number, padString?: string): string;
1516 export function padStart(str: any, targetLength: number, padString?: any): string;
1517
1518 /**
1519 * 用指定字符从后面开始补全字符串
1520 * @param str 字符串
1521 * @param targetLength 结果长度
1522 * @param padString 补全字符
1523 */
1524 export function padEnd(str: string, targetLength: number, padString?: string): string;
1525 export function padEnd(str: any, targetLength: number, padString?: any): string;
1526
1527 /**
1528 * 判断字符串是否在源字符串的头部
1529 * @param str 字符串
1530 * @param val
1531 * @param startIndex 开始索引
1532 */
1533 export function startsWith(str: number | string | null, val: string, startIndex?: number): string;
1534
1535 /**
1536 * 判断字符串是否在源字符串的头部
1537 * @param str 字符串
1538 * @param val
1539 */
1540 export function endsWith(str: string, val: string): string;
1541
1542 /**
1543 * 判断字符串是否在源字符串的头部
1544 * @param str 字符串
1545 * @param val
1546 * @param startIndex 开始索引
1547 */
1548 export function endsWith(str: string, val: string, startIndex: number): string;
1549
1550 /**
1551 * 解析动态字符串模板
1552 * @param str 字符串模板
1553 * @param args 对象
1554 */
1555 export function template(str: string, args: any | any[]): string;
1556 export function template(str: any, args: any | any[]): string;
1557 export function template(str: string, args: any | any[], options: { tmplRE?: RegExp }): string;
1558 export function template(str: any, args: any | any[], options: { tmplRE?: RegExp }): string;
1559
1560 /**
1561 * 字符串格式化占位符
1562 * @param { string } str
1563 * @param { object | any[] } obj
1564 */
1565 export function toFormatString(str: string | null, list: any[]): string;
1566 export function toFormatString(str: any, obj: any): string;
1567
1568 /**
1569 * 转字符串
1570 * @param obj
1571 */
1572 export function toString(obj: any): string;
1573
1574 /**
1575 * 转字符串
1576 * @param obj
1577 */
1578 export function toValueString(obj: number | string | any[] | null): string;
1579 export function toValueString(obj: any): string;
1580
1581 /**
1582 * 返回一个获取对象属性的函数
1583 * @param path 键值
1584 */
1585 export function property(path: string | null): Function;
1586
1587 /**
1588 * 创建一个绑定上下文的函数
1589 * @param callback 回调
1590 * @param context 上下文
1591 * @param params 额外的参数
1592 */
1593 export function bind<C>(callback: (this: C, ...args: any[]) => any, context?: C, ...params: any[]): (this: any, ...args: any[]) => any;
1594
1595 /**
1596 * 创建一个只能调用一次的函数,只会返回第一次执行后的结果
1597 * @param callback 回调
1598 * @param context 上下文
1599 * @param params 额外的参数
1600 */
1601 export function once<S, C>(callback: (this: S, ...args: any[]) => any, context?: C, ...params: any[]): (this: S | C, ...args: any[]) => any;
1602
1603 /**
1604 * 创建一个函数, 调用次数超过 count 次之后执行回调并将所有结果记住后返回
1605 * @param count 次数
1606 * @param callback 回调
1607 * @param context 上下文
1608 */
1609 export function after<C>(count: number, callback: (this: C, ...args: any[]) => any, context?: C): (this: any, ...args: any[]) => any;
1610
1611 /**
1612 * 创建一个函数, 调用次数不超过 count 次之前执行回调并将所有结果记住后返回
1613 * @param count 次数
1614 * @param callback 回调
1615 * @param context 上下文
1616 */
1617 export function before<C>(count: number, callback: (this: C, rests: any[], ...args: any[]) => any, context?: C): (this: any, ...args: any[]) => any;
1618
1619 export interface ThrottleOptions {
1620 /**
1621 * 是否在之前执行
1622 */
1623 leading?: boolean;
1624 /**
1625 * 是否在之后执行
1626 */
1627 trailing?: boolean;
1628 }
1629
1630 /**
1631 * 节流函数;当被调用 n 毫秒后才会执行,如果在这时间内又被调用则至少每隔 n 秒毫秒调用一次该函数
1632 * @param callback 回调
1633 * @param wait 毫秒
1634 * @param options 可选参数
1635 */
1636 export function throttle<C>(callback: (this: C, ...args: any[]) => any, wait: number, options?: ThrottleOptions): (this: C, ...args: any[]) => any;
1637
1638 export interface DebounceOptions {
1639 /**
1640 * 是否在之前执行
1641 */
1642 leading?: boolean;
1643 /**
1644 * 是否在之后执行
1645 */
1646 trailing?: boolean;
1647 }
1648
1649 /**
1650 * 函数去抖;当被调用 n 毫秒后才会执行,如果在这时间内又被调用则将重新计算执行时间
1651 * @param callback 回调
1652 * @param wait 毫秒
1653 * @param options 可选参数
1654 */
1655 export function debounce<C>(callback: (this: C, ...args: any[]) => any, wait: number, options?: DebounceOptions): (this: C, ...args: any[]) => any;
1656
1657 /**
1658 * 该方法和 setTimeout 一样的效果,区别就是支持上下文和额外参数
1659 * @param callback 回调
1660 * @param wait 延迟毫秒
1661 * @param params 额外的参数
1662 */
1663 export function delay(callback: (...args: any[]) => any, wait: number, ...params: any[]): number;
1664
1665 export interface XEUrl {
1666 /**
1667 * 获取完整的地址
1668 */
1669 href: string;
1670 /**
1671 * 获取 #Hash 的完整字符串
1672 */
1673 hash: string;
1674 /**
1675 * 获取主机信息
1676 */
1677 host: string;
1678 /**
1679 * 主机主机名
1680 */
1681 hostname: string;
1682 /**
1683 * 获取地址的协议类型
1684 */
1685 protocol: string;
1686 /**
1687 * 获取端口信息
1688 */
1689 port: string;
1690 /**
1691 * 查询字符串
1692 */
1693 search: string;
1694 /**
1695 * 获取路径字符串
1696 */
1697 pathname: string;
1698 /**
1699 * 获取 #hash 键值
1700 */
1701 origin: string;
1702 /**
1703 * 获取 #hash 键值,不包括参数
1704 */
1705 hashKey: string;
1706 /**
1707 * 获取 #hash 对象参数
1708 */
1709 hashQuery: any;
1710 /**
1711 * 获取查询对象参数
1712 */
1713 searchQuery: any;
1714 }
1715
1716 /**
1717 * 解析 URL 参数
1718 * @param ulr 字符串
1719 */
1720 export function parseUrl(ulr: string): XEUrl;
1721 export function parseUrl(ulr: any): XEUrl;
1722
1723 /**
1724 * 序列化查询参数
1725 * @param query 查询参数
1726 */
1727 export function serialize(query: any): string;
1728
1729 /**
1730 * 反序列化查询参数
1731 * @param str 字符串
1732 */
1733 export function unserialize(str: string): any;
1734 export function unserialize(str: any): any;
1735
1736 /**
1737 * 获取上下文路径
1738 */
1739 export function getBaseURL(): string;
1740
1741 /**
1742 * 获取地址栏信息
1743 */
1744 export function locat(): XEUrl;
1745
1746 export interface XEBrowse {
1747 /**
1748 * 判断是否 NodeJs 环境
1749 */
1750 isNode: boolean;
1751 /**
1752 * 判断是否有 document 元素
1753 */
1754 isDoc: boolean;
1755 /**
1756 * 判断是否 Edge 浏览器
1757 */
1758 edge: boolean;
1759 /**
1760 * 判断是否 Firefox 浏览器
1761 */
1762 firefox: boolean;
1763 /**
1764 * 判断是否 IE 浏览器
1765 */
1766 msie: boolean;
1767 /**
1768 * 判断是否 Safari 浏览器
1769 */
1770 safari: boolean;
1771 /**
1772 * 判断是否移动端
1773 */
1774 isMobile: boolean;
1775 /**
1776 * 判断是否 PC 端
1777 */
1778 isPC: boolean;
1779 /**
1780 * 判断浏览器是否支持 LocalStorage
1781 */
1782 isLocalStorage: boolean;
1783 /**
1784 * 判断浏览器是否支持 SessionStorage
1785 */
1786 isSessionStorage: boolean;
1787 /**
1788 * 判断浏览器是否 -webkit 内核
1789 */
1790 '-webkit': boolean;
1791 /**
1792 * 判断浏览器是否 -moz 内核
1793 */
1794 '-moz': boolean;
1795 /**
1796 * 判断浏览器是否 -ms 内核
1797 */
1798 '-ms': boolean;
1799 /**
1800 * 判断浏览器是否 -o 内核
1801 */
1802 '-o': boolean;
1803 }
1804
1805 /**
1806 * 获取浏览器信息
1807 */
1808 export function browse(): XEBrowse;
1809
1810 export interface CookieOptions {
1811 /**
1812 * 键
1813 */
1814 name?: string;
1815 /**
1816 * 值
1817 */
1818 value?: string;
1819 /**
1820 * 路径
1821 */
1822 path?: string;
1823 /**
1824 * 作用域
1825 */
1826 domain?: string;
1827 /**
1828 * 设置为安全的,只能用https协议
1829 */
1830 secure?: string;
1831 /**
1832 * 过期时间,可以指定日期或者字符串,默认天
1833 */
1834 expires?: string;
1835 }
1836
1837 /**
1838 * Cookie 操作函数
1839 */
1840 export function CookieFunc(): cookie;
1841
1842 /**
1843 * Cookie 操作函数
1844 * @param name 键/数组/对象
1845 */
1846 export function CookieFunc(name: string): cookie;
1847
1848 /**
1849 * Cookie 操作函数
1850 * @param name 键/数组/对象
1851 * @param value 值
1852 */
1853 export function CookieFunc(name: string, value: any): cookie;
1854
1855 /**
1856 * Cookie 操作函数
1857 * @param name 键/数组/对象
1858 * @param value 值
1859 * @param options 可选参数
1860 */
1861 export function CookieFunc(name: string, value: any, options: CookieOptions): cookie;
1862
1863 export type cookie = typeof CookieFunc & {
1864 /**
1865 * 根据 name 判断 Cookie 是否存在
1866 * @param name 键
1867 */
1868 has(name: string): boolean;
1869
1870 /**
1871 * 添加 Cookie
1872 * @param name 键
1873 * @param value 值
1874 * @param options 可选参数
1875 */
1876 set(name: string, value: any, options?: CookieOptions): cookie;
1877
1878 /**
1879 * 根据 name 获取 Cookie
1880 * @param name 键
1881 */
1882 get(name: string): string;
1883
1884 /**
1885 * 根据 name 删除 Cookie
1886 * @param name 键
1887 * @param options 可选参数
1888 */
1889 remove(name: string, options?: CookieOptions): number;
1890
1891 /**
1892 * 获取 Cookie 所有键
1893 */
1894 keys(): any[];
1895
1896 /**
1897 * 获取所有 Cookie
1898 */
1899 getJSON(): any;
1900 }
1901
1902}