@zwa73/utils 1.0.13 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,154 +1,259 @@
1
- type struct = number | string;
1
+ /**遍历函数
2
+ */
3
+ interface EachCallback<T> {
4
+ /**
5
+ * @param {T} value - 值
6
+ * @param {number} index - 下标
7
+ * @param {SList<T>} list - 数组
8
+ * @returns {void}
9
+ */
10
+ (value: T, index: number, list: SList<T>): void;
11
+ }
12
+ /**加工函数
13
+ */
14
+ interface MapCallback<T, U> {
15
+ /**
16
+ * @param {T} value - 值
17
+ * @param {number} index - 下标
18
+ * @param {SList<T>} list - 数组
19
+ * @returns {U} - 返回值
20
+ */
21
+ (value: T, index: number, list: SList<T>): U;
22
+ }
23
+ /**过滤函数
24
+ */
25
+ interface FiltCallback<T> {
26
+ /**
27
+ * @param {T} value - 值
28
+ * @param {number} index - 下标
29
+ * @param {SList<T>} list - 数组
30
+ * @returns {boolean} - 返回值
31
+ */
32
+ (value: T, index: number, list: SList<T>): boolean;
33
+ }
34
+ /**统计函数
35
+ */
36
+ interface AggrCallback<T, U> {
37
+ /**
38
+ * @param {U} accumulator - 累加器
39
+ * @param {T} value - 值
40
+ * @param {number} index - 下标
41
+ * @param {SList<T>} list - 数组
42
+ * @returns {U} - 返回值
43
+ */
44
+ (accumulator: U, value: T, index: number, list: SList<T>): U;
45
+ }
46
+ /**缩减函数
47
+ */
48
+ interface ReduceCallback<T> {
49
+ /**
50
+ * @param {T} previousValue - 上一个值/累加值
51
+ * @param {T} currentValue - 当前值
52
+ * @param {number} currentIndex - 当前下标
53
+ * @param {SList<T>} list - 数组
54
+ * @returns {T} - 返回值
55
+ */
56
+ (previousValue: T, currentValue: T, currentIndex: number, list: SList<T>): T;
57
+ }
58
+ /**排序函数
59
+ */
60
+ interface SortCallback<T> {
61
+ /**
62
+ * @param {T} a - 值a
63
+ * @param {T} b - 值b
64
+ * @returns {number} - 返回值
65
+ */
66
+ (a: T, b: T): number;
67
+ }
2
68
  export declare class SList<T> {
3
69
  private _arr;
4
70
  constructor(obj?: Array<T> | number);
5
- /**返回数组长度*/
71
+ /**返回数组长度
72
+ * @returns {number} - 长度
73
+ */
6
74
  size(): number;
7
75
  /**获取指定下标的元素
8
- * @param index 下标
76
+ * @param {number} index - 下标
77
+ * @returns {T} - 目标元素
9
78
  */
10
79
  get(index: number): T;
11
80
  /**设置指定下标的元素
12
81
  * 返回自身 改变自身
13
- * @param index 下标
14
- * @param value 值
15
- * @returns 自身
82
+ * @param {number} index - 下标
83
+ * @param {T} value -
84
+ * @returns {SList<T>} - 自身
16
85
  */
17
86
  set(index: number, value: T): SList<T>;
18
87
  /**连接两个数组
19
- * @param list 目标数组
20
- * @returns 新数组
88
+ * @param {SList<T>} list - 目标数组
89
+ * @returns {SList<T>} - 新数组
21
90
  */
22
91
  concat(list: SList<T>): SList<T>;
23
92
  /**在数组末尾添加一个元素
24
93
  * 返回自身 改变自身
25
- * @param value 值
94
+ * @param {T} value -
95
+ * @returns {SList<T>} - 自身
26
96
  */
27
97
  push(value: T): SList<T>;
28
98
  /**在数组末尾添加一个数组
29
99
  * 改变自身
30
- * @param list 目标数组
31
- * @returns 自身
100
+ * @param {SList<T>} list - 目标数组
101
+ * @returns {SList<T>} - 自身
32
102
  */
33
103
  pushList(list: SList<T>): this;
34
104
  /**截取从起始点到结束点之前的一段数组
35
- * @param strat 开始点
36
- * @param end 结束点
37
- * @returns 新数组
105
+ * @param {number} strat - 起始点
106
+ * @param {number} end - 结束点
107
+ * @returns {SList<T>} - 新数组
38
108
  */
39
109
  slice(strat: number, end: number): SList<T>;
40
110
  /**翻转数组
41
111
  * 改变自身
42
- * @returns 自身
112
+ * @returns {SList<T>} - 自身
43
113
  */
44
114
  reverse(): SList<T>;
45
- /**将SList转换为数组 */
115
+ /**将SList转换为数组
116
+ * @returns {Array<T>} - 数组
117
+ */
46
118
  toArray(): Array<T>;
119
+ /**将SList转换为SStream
120
+ * @param {number} concurrent - 并发数
121
+ * @returns {SStream<T>} - 流
122
+ */
123
+ toSStream(concurrent?: number): SStream<T>;
47
124
  /**返回指定元素在数组中首次出现的位置
48
- * @param value 目标元素
125
+ * @param {T} value - 目标元素
126
+ * @returns {number} - 下标
49
127
  */
50
128
  indexOf(value: T): number;
51
129
  /**返回指定元素在数组中最后一次出现的位置
52
- * @param value 目标元素
130
+ * @param {T} value - 目标元素
131
+ * @returns {number} - 下标
53
132
  */
54
133
  lastIndexOf(value: T): number;
55
134
  /**判断数组中是否包含指定元素
56
- * @param value 目标元素
135
+ * @param {T} value - 目标元素
136
+ * @returns {boolean} - 是否包含
57
137
  */
58
138
  contains(value: T): boolean;
59
- /**获取迭代器 */
139
+ /**获取迭代器
140
+ * @returns {SIterator<T>} - 迭代器
141
+ */
60
142
  iterator(): SIterator<T>;
61
- /**平分数组 */
62
- divide(count: number): SList<SList<T>>;
63
- /**从index开始删除count个元素
143
+ /**平分数组
144
+ * @param {number} count - 份数
145
+ * @param {"average" | "chunk"} mode - 模式 average:轮询平均分 chunk:切块均分
146
+ * @returns {SList<SList<T>>} - 新数组
147
+ */
148
+ divide(count: number, mode?: "average" | "chunk"): SList<SList<T>>;
149
+ /**从index开始删除count个元素,返回删除的元素数组
64
150
  * 改变自身
65
- * @param index 起始点
66
- * @param count 数量
67
- * @returns 自身
151
+ * @param {number} index - 起始点
152
+ * @param {number} count - 数量
153
+ * @returns {SList<T>} - 删除的元素数组
68
154
  */
69
155
  removeRange(index: number, count: number): SList<T>;
70
- /**删除对应下标下的元素
156
+ /**删除对应下标下的元素,返回删除的元素
71
157
  * 改变自身
72
- * @param i 下标
73
- * @returns 自身
158
+ * @param {number} i - 下标
159
+ * @returns {T|null} - 删除的元素
74
160
  */
75
- remove(i: number): SList<T>;
76
- /**删除第一个匹配的项目(改变长度)
161
+ remove(i: number): T | null;
162
+ /**删除第一个匹配的项目,返回自身
77
163
  * 改变自身
78
- * @param obj 需删除目标
79
- * @returns 自身
164
+ * @param {T} obj - 需删除目标
165
+ * @returns {SList<T>} - 自身
80
166
  */
81
167
  removeMember(obj: T): SList<T>;
82
168
  /**删除所有匹配的项目
83
169
  * 改变自身
84
- * @param obj 需删除目标
85
- * @returns 自身
170
+ * @param {T} obj - 需删除目标
171
+ * @returns {SList<T>} - 自身
86
172
  */
87
173
  removeAllMember(obj: T): SList<T>;
88
174
  /**在这个下标对应的元素前添加一个元素
89
175
  * 改变自身
90
- * @param index 下标
91
- * @param obj 添加对象
92
- * @returns 自身
176
+ * @param {number} index - 下标
177
+ * @param {T} obj - 添加对象
178
+ * @returns {SList<T>} - 自身
93
179
  */
94
180
  insert(index: number, obj: T): SList<T>;
95
181
  /**在这个下标对应的元素前添加一组元素
96
182
  * 改变自身
97
- * @param index 下标
98
- * @param obj 添加对象
99
- * @returns 自身
183
+ * @param {number} index - 下标
184
+ * @param {SList<T>} obj - 添加对象
185
+ * @returns {SList<T>} - 自身
100
186
  */
101
187
  insertRange(index: number, obj: SList<T>): SList<T>;
188
+ /**删除并返回最后一个元素
189
+ * 改变自身
190
+ * @returns {T | null} - 最后一个元素
191
+ */
192
+ pop(): T | null;
193
+ /**删除并返回第一个元素
194
+ * 改变自身
195
+ * @returns {T | null} - 第一个元素
196
+ */
197
+ shift(): T | null;
102
198
  /**克隆数组
103
- * @returns 新数组
199
+ * @returns {SList<T>} - 新数组
104
200
  */
105
201
  clone(): SList<T>;
106
202
  /**判断数组是否为空
203
+ * @returns {boolean} - 是否为空
107
204
  */
108
205
  isEmpty(): boolean;
109
206
  /**删除数组中的重复元素
110
207
  * 改变自身
111
- * @returns 自身
208
+ * @returns {SList<T>} - 自身
112
209
  */
113
210
  removeDuplicates(): SList<T>;
114
211
  /**交集
115
- * @param lists 数组列表
116
- * @returns 新数组
212
+ * @param {SList<T>[]} lists - 数组列表
213
+ * @returns {SList<T>} - 新数组
117
214
  */
118
215
  intersection(...lists: SList<T>[]): SList<T>;
119
216
  /**并集
120
- * @param lists 数组列表
121
- * @returns 新数组
217
+ * @param {SList<T>[]} lists - 数组列表
218
+ * @returns {SList<T>} - 新数组
122
219
  */
123
220
  union(...lists: SList<T>[]): SList<T>;
124
221
  /**返回符合条件的成员组成的新数组
125
- * @param func 条件函数
126
- * @returns 新数组
222
+ * @param {FiltCallback<T>} func - 条件函数
223
+ * @returns {SList<T>} - 新数组
127
224
  */
128
- filt(func: (value: T) => boolean): SList<T>;
225
+ filt(func: FiltCallback<T>): SList<T>;
129
226
  /**遍历数组的每一个元素
130
- * @param func 处理函数
131
- * @returns 自身
227
+ * @param {EachCallback<T>} func - 遍历函数 (value: T, index: number, list: SList<T>): void
228
+ * @returns {SList<T>} - 自身
132
229
  */
133
- each(func: (value: T) => void): SList<T>;
230
+ each(func: EachCallback<T>): SList<T>;
134
231
  /**对数组的每一个元素进行加工,返回加工完成的成员组成的新数组
135
- * @param func 加工函数
136
- * @returns 新数组
232
+ * @param {MapCallback<T,O>} func - 加工函数 (value: T, index: number, list: SList<T>): O
233
+ * @returns {SList<O>} - 新数组
137
234
  */
138
- map<O>(func: (value: T) => O): SList<O>;
235
+ map<O>(func: MapCallback<T, O>): SList<O>;
139
236
  /**对数组进行排序
140
237
  * 如函数返回值大于 0 则将 x 排在 y 后面,小于 0 则将 x 排在 y 前面
141
238
  * 改变自身
142
- * @param func 比较函数
143
- * @returns 自身
144
- */
145
- sort(func: (a: T, b: T) => number): SList<T>;
146
- /**对数组进行统计
147
- * @param init 初始值
148
- * @param func 统计函数
149
- * @returns 结果
150
- */
151
- stat<O>(init: O, func: (accumulator: O, currentValue: T) => O): O;
239
+ * @param {SortCallback<T>} func - 排序函数 (a: T, b: T): number
240
+ * @returns {SList<T>} - 自身
241
+ */
242
+ sort(func: SortCallback<T>): SList<T>;
243
+ /**对数组进行统计 aggregate
244
+ * 遍历数组,并将每次遍历的结果与下一次遍历的元素一起传入函数,最后返回最后一次遍历的结果
245
+ * @param {O} init - 初始值
246
+ * @param {AggrCallback<T,O>} func - 统计函数 (value: T, accumulator: U, index: number, list: SList<T>): U
247
+ * @returns {O} - 统计结果
248
+ */
249
+ aggr<O>(init: O, func: AggrCallback<T, O>): O;
250
+ /**对数组进行缩减
251
+ * 遍历数组,并将每次遍历的结果与下一次遍历的元素一起传入函数,最后返回最后一次遍历的结果
252
+ * @param {ReduceCallback<T>} func - 缩减函数 (previousValue: T, currentValue: T, currentIndex: number, array: SList<T>):T
253
+ * @param {T} init - 初始值
254
+ * @returns {T} - 缩减结果
255
+ */
256
+ reduce(func: ReduceCallback<T>, init?: T): T | null;
152
257
  [Symbol.iterator](): {
153
258
  next(): {
154
259
  value: T | null;
@@ -156,63 +261,111 @@ export declare class SList<T> {
156
261
  };
157
262
  };
158
263
  }
264
+ interface SStreamOperation<T, U> {
265
+ (item: T): Promise<U>;
266
+ }
267
+ export declare class SStream<T> {
268
+ /**并发数*/
269
+ private _concurrent;
270
+ /**原始列表*/
271
+ private _slist;
272
+ /**加工函数列表*/
273
+ private _operation;
274
+ constructor(slist: SList<T> | Array<T>, concurrent?: number);
275
+ /**映射加工
276
+ * @param {SStreamOperation<T,U>} operation - 加工函数
277
+ * @returns {SStream<U>} - 新流
278
+ */
279
+ map<U>(operation: SStreamOperation<T, U>): SStream<U>;
280
+ /**遍历
281
+ * 返回自身
282
+ * @param {SStreamOperation<T,void>} operation - 遍历函数
283
+ * @returns {SStream<T>} - 自身
284
+ */
285
+ each(operation: SStreamOperation<T, void>): SStream<T>;
286
+ /**应用加工
287
+ * @returns {SStream<T>} - 自身
288
+ */
289
+ appendOperations(): Promise<SStream<T>>;
290
+ /**转换为SList
291
+ * @returns {SList<T>} - 数组
292
+ */
293
+ toSList(): Promise<SList<T>>;
294
+ /**转换为数组
295
+ * @returns {Array<T>} - 数组
296
+ */
297
+ toArray(): Promise<Array<T>>;
298
+ }
159
299
  export declare class SIterator<T> {
160
300
  private _index;
161
301
  private _list;
162
302
  constructor(list: SList<T>);
163
303
  /**判断还有没有下一个元素
304
+ * @returns {boolean} - 是否有下一个元素
164
305
  */
165
306
  hasNext(): boolean;
166
307
  /**判断当前下标有无元素
308
+ * @returns {boolean} - 是否有当前元素
167
309
  */
168
310
  hasCurr(): boolean;
169
311
  /**判断还有没有上一个元素
312
+ * @returns {boolean} - 是否有上一个元素
170
313
  */
171
314
  hasPre(): boolean;
172
315
  /**返回下一个下标指向的数组内成员,然后下标自加1
316
+ * @returns {T} - 下一个成员
173
317
  */
174
318
  next(): T;
175
319
  /**返回上一个下标指向的数组内成员,然后下标自减1
320
+ * @returns {T} - 上一个成员
176
321
  */
177
322
  pre(): T;
178
323
  /**返回当前下标指向的数组内成员
324
+ * @returns {T} - 当前成员
179
325
  */
180
326
  curr(): T;
181
327
  /**返回遍历长度
182
- * @returns 遍历长度
328
+ * @returns {number} - 遍历长度
183
329
  */
184
330
  size(): number;
185
331
  /**获取下个下标
186
- * @returns 下个下标
332
+ * @returns {number} - 下个下标
187
333
  */
188
334
  nextIndex(): number;
189
335
  /**获取当前下标
190
- * @returns 当前下标
336
+ * @return {number} - 当前下标
191
337
  */
192
338
  currIndex(): number;
193
339
  /**获取上个下标
194
- * @returns 上个下标
340
+ * @returns {number} - 上个下标
195
341
  */
196
342
  preIndex(): number;
197
343
  /**判断是否是最后一个
198
- * @returns 是否是最后一个
344
+ * @returns {boolean} - 是否是最后一个
199
345
  */
200
346
  isLast(): boolean;
201
347
  /**设置数组在迭代器当前下标中的内容
202
- * @param val 要设置的值
348
+ * 返回自身
349
+ * @param {T} val 要设置的内容
350
+ * @returns {void}
203
351
  */
204
- set(val: T): void;
352
+ set(val: T): SIterator<T>;
205
353
  /**删除数组在当前下标的内容,然后将下标移至上一位,改变数组长度
354
+ * @returns {T} - 被删除的内容
206
355
  */
207
- remove(): void;
356
+ remove(): T;
208
357
  /**在当前下标前插入元素,然后将下标移至原元素,即下一位,改变数组长度
209
- * @param obj 要插入的元素
358
+ * 返回自身
359
+ * @param {T} obj - 要插入的元素
360
+ * @returns {SIterator<T>} - 自身
210
361
  */
211
- addPre(obj: T): void;
362
+ addPre(obj: T): SIterator<T>;
212
363
  /**在当前下标后插入元素,然后将下标移至新元素,即下一位,改变数组长度
213
- * @param obj 要插入的元素
364
+ * 返回自身
365
+ * @param {T} obj - 要插入的元素
366
+ * @returns {SIterator<T>} - 自身
214
367
  */
215
- addNext(obj: T): void;
368
+ addNext(obj: T): SIterator<T>;
216
369
  }
217
370
  export declare class SEntry<K, V> {
218
371
  private _key;
@@ -225,105 +378,116 @@ export declare class SEntry<K, V> {
225
378
  }
226
379
  export declare class SHashMap<K, V> {
227
380
  private _map;
381
+ /**构造函数
382
+ * @param {Map<K, V>} [map] - 一个键值对集合
383
+ */
228
384
  constructor(map?: Map<K, V>);
229
385
  /**添加一个键值对
230
- * @param entry 键值对
231
- * @returns 自身
386
+ * 返回自身
387
+ * @param {SEntry<K, V>} entry - 键值对
388
+ * @returns {SHashMap<K, V>} - 自身
232
389
  */
233
390
  putEntry(entry: SEntry<K, V>): SHashMap<K, V>;
234
391
  /**获取指定键的值
235
- * @param key 键
236
- * @returns 值
392
+ * @param {K} key -
393
+ * @returns {V | undefined} -
237
394
  */
238
395
  get(key: K): V | undefined;
239
396
  /**添加一个键值对
240
- * @param key 键
241
- * @param value
242
- * @returns 自身
397
+ * 返回自身
398
+ * @param {K} key - 键
399
+ * @param {V} value - 值
400
+ * @returns {SHashMap<K, V>} - 自身
243
401
  */
244
402
  put(key: K, value: V): SHashMap<K, V>;
245
403
  /**判断是否存在指定键
246
- * @param key 键
247
- * @returns 是否存在
404
+ * @param {K} key -
405
+ * @returns {boolean} - 是否存在
248
406
  */
249
407
  has(key: K): boolean;
250
408
  /**获取所有键值对
251
- * @returns 键值对列表
409
+ * @returns {SList<SEntry<K, V>>} - 键值对列表
252
410
  */
253
411
  entrys(): SList<SEntry<K, V>>;
254
412
  /**获取所有键
255
- * @returns 键列表
413
+ * @returns {SList<K>} - 键列表
256
414
  */
257
415
  keys(): SList<K>;
258
416
  /**获取所有值
259
- * @returns 值列表
417
+ * @returns {SList<V>} - 值列表
260
418
  */
261
419
  values(): SList<V>;
262
- /**获取迭代器
263
- * @returns 迭代器
420
+ /**转换为entry数组,并获取迭代器
421
+ * @returns {SIterator<SEntry<K, V>>} - 迭代器
264
422
  */
265
423
  iterator(): SIterator<SEntry<K, V>>;
266
424
  /**删除指定键的键值对
267
- * @param key 键
268
- * @returns 删除的值
425
+ * @param {K} key -
426
+ * @returns {V | undefined} - 被删除的值
269
427
  */
270
428
  remove(key: K): V | undefined;
271
429
  /**清空哈希表
272
- * @returns 自身
430
+ * @returns {SHashMap<K, V>} - 自身
273
431
  */
274
432
  clear(): SHashMap<K, V>;
275
433
  /**判断哈希表是否为空
276
- * @returns 是否为空
434
+ * @returns {boolean} - 是否为空
277
435
  */
278
436
  isEmpty(): boolean;
279
437
  /**判断是否存在指定值
280
- * @param val 值
281
- * @returns 是否存在
438
+ * @param {V} val -
439
+ * @returns {boolean} - 是否存在
282
440
  */
283
441
  containsValue(val: V): boolean;
284
442
  /**判断是否存在指定键
285
- * @param key 键
286
- * @returns 是否存在
443
+ * @param {K} key -
444
+ * @returns {boolean} - 是否存在
287
445
  */
288
446
  containsKey(key: K): boolean;
289
- /**加载指定键的值,若不存在则添加默认值并返回默认值
290
- * @param key 键
291
- * @param def 默认值
292
- * @returns 值或默认值
447
+ /**加载指定键的值,若不存在则添加默认值
448
+ * 返回键值
449
+ * @param {K} key - 键
450
+ * @param {V} def - 默认值
451
+ * @returns {V} - 值
293
452
  */
294
453
  load(key: K, def: V): V;
295
454
  /**合并另一个哈希表,可选择是否覆盖已有键值对
296
- * @param nmap 另一个哈希表
297
- * @param isCover 是否覆盖已有键值对,默认为 true
298
- * @returns 自身
455
+ * @param {SHashMap<K, V>} nmap - 另一个哈希表
456
+ * @param {boolean} [isCover=true] - 是否覆盖已有键值对,默认为 true
457
+ * @returns {SHashMap<K, V>} - 自身
299
458
  */
300
459
  merge(nmap: SHashMap<K, V>, isCover?: boolean): SHashMap<K, V>;
301
460
  /**获取哈希表大小(键的数量)
302
- * @returns 大小(键的数量)
461
+ * @returns {number} - 大小
303
462
  */
304
463
  size(): number;
305
464
  /**对哈希表的每一个键值对进行加工,返回加工完成的键值对组成的新哈希表
306
- * @param func 加工函数
307
- * @returns 新哈希表
465
+ * @param {MapCallback<SEntry<K, V>, SEntry<OK, OV>>} func - 加工函数
466
+ * @returns {SHashMap<OK, OV>} - 新哈希表
308
467
  */
309
- map<OK extends struct, OV>(func: (entry: SEntry<K, V>) => SEntry<OK, OV>): SHashMap<OK, OV>;
468
+ map<OK, OV>(func: MapCallback<SEntry<K, V>, SEntry<OK, OV>>): SHashMap<OK, OV>;
310
469
  /**返回符合条件的键值对组成的新哈希表
311
- * @param func 条件函数
312
- * @returns 新哈希表
470
+ * @param {FiltCallback<SEntry<K, V>>): boolean} func - 条件函数
471
+ * @returns {SHashMap<K, V>} - 新哈希表
313
472
  */
314
- filt(func: (entry: SEntry<K, V>) => boolean): SHashMap<K, V>;
473
+ filt(func: FiltCallback<SEntry<K, V>>): SHashMap<K, V>;
315
474
  /**遍历哈希表的每一个键值对
316
- * @param func 处理函数
317
- * @returns 自身
318
- */
319
- each(func: (entry: SEntry<K, V>) => void): SHashMap<K, V>;
320
- /**
321
- * 对哈希表进行统计
322
- * @param init 初始值
323
- * @param func 统计函数
324
- * @returns 结果
325
- */
326
- stat<O>(init: O, func: (accumulator: O, entry: SEntry<K, V>) => O): O;
475
+ * @param {EachCallback<SEntry<K, V>>} func - 遍历函数
476
+ * @returns {SHashMap<K, V>} - 自身
477
+ */
478
+ each(func: EachCallback<SEntry<K, V>>): SHashMap<K, V>;
479
+ /**对哈希表进行统计
480
+ * @param {O} init - 初始值
481
+ * @param {AggrCallback<SEntry<K, V>,O>} func - 统计函数
482
+ * @returns {O} - 统计结果
483
+ */
484
+ aggr<O>(init: O, func: AggrCallback<SEntry<K, V>, O>): O;
485
+ /**对哈希表进行缩减
486
+ * @param {AggrCallback<SEntry<K, V>,V>} func - 缩减函数
487
+ * @param {V} init - 初始值
488
+ * @returns {V} - 缩减结果
489
+ */
490
+ reduce(func: AggrCallback<SEntry<K, V>, V>, init?: V): V | null;
327
491
  [Symbol.iterator](): {
328
492
  next(): {
329
493
  value: SEntry<K, V> | null;