-
Notifications
You must be signed in to change notification settings - Fork 592
/
index.d.ts
306 lines (268 loc) · 8.5 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
declare namespace outils {
/**
*
* @desc 判断两个数组是否相等
* @param {Array} arr1
* @param {Array} arr2
* @return {Boolean}
*/
export function arrayEqual(arr1: Array<any>, arr2: Array<any>): boolean
/**
*
* @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
/**
*
* @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 函数防抖
* 与throttle不同的是,debounce保证一个函数在多少毫秒内不再被触发,只会执行一次,
* 要么在第一次调用return的防抖函数时执行,要么在延迟指定毫秒后调用。
* @example 适用场景:如在线编辑的自动存储防抖。
* @param {Number} delay 0或者更大的毫秒数。 对于事件回调,大约100或250毫秒(或更高)的延迟是最有用的。
* @param {Boolean} atBegin 可选,默认为false。
* 如果`atBegin`为false或未传入,回调函数则在第一次调用return的防抖函数后延迟指定毫秒调用。
如果`atBegin`为true,回调函数则在第一次调用return的防抖函数时直接执行
* @param {Function} callback 延迟毫秒后执行的函数。`this`上下文和所有参数都是按原样传递的,
* 执行去抖动功能时,,调用`callback`。
*
* @return {Function} 新的防抖函数。
*/
export function debounce(delay: number, atBegin?: boolean, callback?: () => void): void
/**
* @desc 函数节流。
* 适用于限制`resize`和`scroll`等函数的调用频率
*
* @param {Number} delay 0 或者更大的毫秒数。 对于事件回调,大约100或250毫秒(或更高)的延迟是最有用的。
* @param {Boolean} noTrailing 可选,默认为false。
* 如果noTrailing为true,当节流函数被调用,每过`delay`毫秒`callback`也将执行一次。
* 如果noTrailing为false或者未传入,`callback`将在最后一次调用节流函数后再执行一次.
* (延迟`delay`毫秒之后,节流函数没有被调用,内部计数器会复位)
* @param {Function} callback 延迟毫秒后执行的函数。`this`上下文和所有参数都是按原样传递的,
* 执行去节流功能时,调用`callback`。
* @param {Boolean} debounceMode 如果`debounceMode`为true,`clear`在`delay`ms后执行。
* 如果debounceMode是false,`callback`在`delay` ms之后执行。
*
* @return {Function} 新的节流函数
*/
export function throttle(delay: number, noTrailing?: boolean, callback?: () => void, debounceMode?: boolean): void
/**
* @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 随机生成颜色
* @return {String}
*/
export function randomColor(): string
/**
*
* @desc 生成指定范围[min, max]的随机数
* @param {Number} min
* @param {Number} max
* @return {Number}
*/
export function randomNum(min: number, max: number): number
/**
*
* @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 isPhoneNum(str: string | number): boolean
/**
*
* @desc 判断是否为URL地址
* @param {String} str
* @return {Boolean}
*/
export function isUrl(str: string): boolean
/**
*
* @desc 现金额转大写
* @param {Number} n
* @return {String}
*/
export function digitUppercase(n: number): string
/**
*
* @desc 判断浏览器是否支持webP格式图片
* @return {Boolean}
*/
export function isSupportWebP(): boolean
/**
* @desc 格式化${startTime}距现在的已过时间
* @param {Date} startTime
* @return {String}
*/
export function formatPassTime(startTime: Date): string
/**
*
* @desc 格式化现在距${endTime}的剩余时间
* @param {Date} endTime
* @return {String}
*/
export function formatRemainTime(endTime: Date): string
/**
*
* @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参数转对象
* @param {String} url default: window.location.href
* @return {Object}
*/
export function parseQueryString(url?: URL): object
/**
*
* @desc 对象序列化
* @param {Object} obj
* @return {String}
*/
export function stringfyQueryString(obj: object): string
}
declare module "outils" {
export = outils
}