grofc_utils 1.0.0

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.
@@ -0,0 +1,223 @@
1
+ /**
2
+ * 检查变量是否为空值(不为 null 或 undefined)
3
+ * @param {*} variable - 要检查的变量
4
+ * @param {string} name - 变量名称(用于错误消息)
5
+ * @throws {TypeError} 当变量为 null 或 undefined 时抛出类型错误
6
+ */
7
+ export function throwIfIsNullishValue(variable: any, name?: string): void;
8
+ /**
9
+ * 检查变量是否为真值(truthy)
10
+ * @param {*} variable - 要检查的变量
11
+ * @param {string} name - 变量名称(用于错误消息)
12
+ * @throws {TypeError} 当变量为假值(falsy)时抛出类型错误
13
+ */
14
+ export function throwIfIsFalsyValue(variable: any, name?: string): void;
15
+ /**
16
+ * 检查变量是否为数字类型
17
+ * @param {*} variable - 要检查的变量
18
+ * @param {string} name - 变量名称(用于错误消息)
19
+ * @throws {TypeError} 当变量不是数字类型时抛出类型错误
20
+ */
21
+ export function throwIfIsNotNumber(variable: any, name?: string): void;
22
+ /**
23
+ * 检查数字变量是否为 NaN(非数字)
24
+ * @param {*} variable - 要检查的变量
25
+ * @param {string} name - 变量名称(用于错误消息)
26
+ * @throws {TypeError} 当变量是 NaN 时抛出类型错误
27
+ */
28
+ export function throwIfIsNotComparableNumber(variable: any, name?: string): void;
29
+ /**
30
+ * 检查变量是否为有限数字(排除 Infinity 和 -Infinity,但允许 NaN)
31
+ * @param {*} variable - 要检查的变量
32
+ * @param {string} name - 变量名称(用于错误消息)
33
+ * @throws {TypeError} 当变量不是有限数字时抛出类型错误
34
+ */
35
+ export function throwIfIsNotFiniteNumber(variable: any, name?: string): void;
36
+ /**
37
+ * 检查变量是否为正有限数
38
+ * @param {*} variable - 要检查的变量
39
+ * @param {string} name - 变量名称(用于错误消息)
40
+ * @throws {RangeError} 当变量不是正有限数时抛出范围错误
41
+ */
42
+ export function throwIfIsNotPositiveFiniteNumber(variable: any, name?: string): void;
43
+ /**
44
+ * 检查变量是否为负有限数
45
+ * @param {*} variable - 要检查的变量
46
+ * @param {string} name - 变量名称(用于错误消息)
47
+ * @throws {RangeError} 当变量不是负有限数时抛出范围错误
48
+ */
49
+ export function throwIfIsNotNegativeFiniteNumber(variable: any, name?: string): void;
50
+ /**
51
+ * 检查变量是否为非负有限数(大于等于0的有限数)
52
+ * @param {*} variable - 要检查的变量
53
+ * @param {string} name - 变量名称(用于错误消息)
54
+ * @throws {RangeError} 当变量不是非负有限数时抛出范围错误
55
+ */
56
+ export function throwIfIsNotNonNegativeFiniteNumber(variable: any, name?: string): void;
57
+ /**
58
+ * 检查变量是否为整数
59
+ * @param {*} variable - 要检查的变量
60
+ * @param {string} name - 变量名称(用于错误消息)
61
+ * @throws {TypeError} 当变量不是整数时抛出类型错误
62
+ */
63
+ export function throwIfIsNotInteger(variable: any, name?: string): void;
64
+ /**
65
+ * 检查变量是否为正整数
66
+ * @param {*} variable - 要检查的变量
67
+ * @param {string} name - 变量名称(用于错误消息)
68
+ * @throws {RangeError} 当变量不是正整数时抛出范围错误
69
+ */
70
+ export function throwIfIsNotPositiveInteger(variable: any, name?: string): void;
71
+ /**
72
+ * 检查变量是否为负整数
73
+ * @param {*} variable - 要检查的变量
74
+ * @param {string} name - 变量名称(用于错误消息)
75
+ * @throws {RangeError} 当变量不是负整数时抛出范围错误
76
+ */
77
+ export function throwIfIsNotNegativeInteger(variable: any, name?: string): void;
78
+ /**
79
+ * 检查变量是否为非负整数(自然数,包括0)
80
+ * @param {*} variable - 要检查的变量
81
+ * @param {string} name - 变量名称(用于错误消息)
82
+ * @throws {RangeError} 当变量不是非负整数时抛出范围错误
83
+ */
84
+ export function throwIfIsNotNonNegativeInteger(variable: any, name?: string): void;
85
+ /**
86
+ * 检查变量是否为普通对象(非 null,非数组)
87
+ * @param {*} variable - 要检查的变量
88
+ * @param {string} name - 变量名称(用于错误消息)
89
+ * @throws {TypeError} 当变量不是普通对象时抛出类型错误
90
+ */
91
+ export function throwIfIsNotPlainObject(variable: any, name?: string): void;
92
+ /**
93
+ * 检查对象是否缺少所有指定的键
94
+ * @param {*} variable - 要检查的对象
95
+ * @param {string|string[]} keys - 要检查的键名或键名数组
96
+ * @param {string} name - 变量名称(用于错误消息)
97
+ * @throws {TypeError} 当 variable 不是普通对象时抛出类型错误
98
+ * @throws {GuardError} 当 keys 不是字符串或字符串数组时抛出守卫错误
99
+ * @throws {Error} 当对象缺少所有指定键时抛出错误
100
+ */
101
+ export function throwIfAllKeysMissing(variable: any, keys: string | string[], name?: string): void;
102
+ /**
103
+ * 检查对象是否缺少任意指定的键
104
+ * @param {*} variable - 要检查的对象
105
+ * @param {string|string[]} keys - 要检查的键名或键名数组
106
+ * @param {string} name - 变量名称(用于错误消息)
107
+ * @throws {TypeError} 当 variable 不是普通对象时抛出类型错误
108
+ * @throws {GuardError} 当 keys 不是字符串或字符串数组时抛出守卫错误
109
+ * @throws {Error} 当对象缺少任何一个指定键时抛出错误
110
+ */
111
+ export function throwIfSomeKeysMissing(variable: any, keys: string | string[], name?: string): void;
112
+ /**
113
+ * 检查变量是否为函数类型,如果不是则抛出类型错误
114
+ * @param {*} variable - 要检查的变量
115
+ * @param {string} name - 变量名称(用于错误消息),默认值为"variable"
116
+ * @throws {TypeError} 当变量不是函数类型时抛出类型错误
117
+ */
118
+ export function throwIfIsNotFunction(variable: any, name?: string): void;
119
+ /**
120
+ * 检查变量是否为可迭代对象或字符串
121
+ * @param {*} variable - 要检查的变量
122
+ * @param {string} name - 变量名称(用于错误消息)
123
+ * @throws {TypeError} 当变量不是可迭代对象或字符串时抛出类型错误
124
+ */
125
+ export function throwIfIsNotIterable(variable: any, name?: string): void;
126
+ /**
127
+ * 检查变量是否为可迭代对象,如果不是则抛出类型错误
128
+ * @param {*} variable - 要检查的变量
129
+ * @param {string} name - 变量名称(用于错误消息)
130
+ * @throws {TypeError} 当变量不是可迭代对象时抛出类型错误
131
+ */
132
+ export function throwIfIsNotIterableObject(variable: any, name?: string): void;
133
+ export function throwIfIsNotArray(variable: any, name?: string): void;
134
+ export function throwIfIsNotNonEmptyArray(variable: any, name?: string): void;
135
+ /**
136
+ * 检查变量是否为仅包含非NaN数字的数组,如果不是则抛出类型错误
137
+ *
138
+ * @param {*} variable - 需要检查的变量
139
+ * @param {string} [name="variable"] - 变量名称,用于错误消息显示
140
+ * @param {string} [generalTerm=`all elements of ${name || "array"}`] - 通用术语,用于错误消息显示
141
+ * @throws {TypeError} 当变量不是数组或数组元素不符合要求时抛出错误
142
+ */
143
+ export function throwIfIsNotComparableNumberArray(variable: any, name?: string, generalTerm?: string): void;
144
+ /**
145
+ * 校验变量是否为仅包含有限数(有限 number)的数组。
146
+ * @param {*} variable - 待校验的变量
147
+ * @param {string} [name="variable"] - 变量名称,用于错误消息上下文
148
+ * @param {string} [generalTerm=`all elements of ${name || "array"}`] - 元素合称,用于错误消息上下文
149
+ * @throws {TypeError} 若 variable 不是数组,或包含非数字、NaN、Infinity、-Infinity
150
+ */
151
+ export function throwIfIsNotFiniteNumberArray(variable: any, name?: string, generalTerm?: string): void;
152
+ /**
153
+ * 校验变量是否为仅包含正有限数(> 0 的有限 number)的数组。
154
+ * @param {*} variable - 待校验的变量
155
+ * @param {string} [name="variable"] - 变量名称,用于错误消息上下文
156
+ * @param {string} [generalTerm=`all elements of ${name || "array"}`] - 元素合称,用于错误消息上下文
157
+ * @throws {TypeError} 若 variable 不是数组,或包含非数字、NaN、Infinity、负数、零
158
+ */
159
+ export function throwIfIsNotPositiveFiniteNumberArray(variable: any, name?: string, generalTerm?: string): void;
160
+ /**
161
+ * 校验变量是否为仅包含非负有限数(>= 0 的有限 number)的数组。
162
+ * @param {*} variable - 待校验的变量
163
+ * @param {string} [name="variable"] - 变量名称,用于错误消息上下文
164
+ * @param {string} [generalTerm=`all elements of ${name || "array"}`] - 元素合称,用于错误消息上下文
165
+ * @throws {TypeError} 若 variable 不是数组,或包含非数字、NaN、Infinity、负数
166
+ */
167
+ export function throwIfIsNotNonNegativeFiniteNumberArray(variable: any, name?: string, generalTerm?: string): void;
168
+ /**
169
+ * 校验变量是否为仅包含负有限数(< 0 的有限 number)的数组。
170
+ * @param {*} variable - 待校验的变量
171
+ * @param {string} [name="variable"] - 变量名称,用于错误消息上下文
172
+ * @param {string} [generalTerm=`all elements of ${name || "array"}`] - 元素合称,用于错误消息上下文
173
+ * @throws {TypeError} 若 variable 不是数组,或包含非数字、NaN、Infinity、正数、零
174
+ */
175
+ export function throwIfIsNotNegativeFiniteNumberArray(variable: any, name?: string, generalTerm?: string): void;
176
+ /**
177
+ * 校验变量是否为仅包含整数的数组。
178
+ * @param {*} variable - 待校验的变量
179
+ * @param {string} [name="variable"] - 变量名称,用于错误消息上下文
180
+ * @param {string} [generalTerm=`all elements of ${name || "array"}`] - 元素合称,用于错误消息上下文
181
+ * @throws {TypeError} 若 variable 不是数组,或包含非数字、NaN、小数
182
+ */
183
+ export function throwIfIsNotIntegerArray(variable: any, name?: string, generalTerm?: string): void;
184
+ /**
185
+ * 校验变量是否为仅包含正整数(> 0 的整数)的数组。
186
+ * @param {*} variable - 待校验的变量
187
+ * @param {string} [name="variable"] - 变量名称,用于错误消息上下文
188
+ * @param {string} [generalTerm=`all elements of ${name || "array"}`] - 元素合称,用于错误消息上下文
189
+ * @throws {TypeError} 若 variable 不是数组,或包含非数字、NaN、Infinity、负数、零、小数
190
+ */
191
+ export function throwIfIsNotPositiveIntegerArray(variable: any, name?: string, generalTerm?: string): void;
192
+ /**
193
+ * 校验变量是否为仅包含非负整数(>= 0 的整数)的数组。
194
+ * @param {*} variable - 待校验的变量
195
+ * @param {string} [name="variable"] - 变量名称,用于错误消息上下文
196
+ * @param {string} [generalTerm=`all elements of ${name || "array"}`] - 元素合称,用于错误消息上下文
197
+ * @throws {TypeError} 若 variable 不是数组,或包含非数字、NaN、Infinity、负数、小数
198
+ */
199
+ export function throwIfIsNotNonNegativeIntegerArray(variable: any, name?: string, generalTerm?: string): void;
200
+ /**
201
+ * 校验变量是否为仅包含负整数(< 0 的整数)的数组。
202
+ * @param {*} variable - 待校验的变量
203
+ * @param {string} [name="variable"] - 变量名称,用于错误消息上下文
204
+ * @param {string} [generalTerm=`all elements of ${name || "array"}`] - 元素合称,用于错误消息上下文
205
+ * @throws {TypeError} 若 variable 不是数组,或包含非数字、NaN、Infinity、正数、零、小数
206
+ */
207
+ export function throwIfIsNotNegativeIntegerArray(variable: any, name?: string, generalTerm?: string): void;
208
+ /**
209
+ * 检查数字变量是否为 NaN(非数字)
210
+ * @param {*} variable - 要检查的变量
211
+ * @param {string} name - 变量名称(用于错误消息)
212
+ * @throws {TypeError} 当变量是 NaN 时抛出类型错误
213
+ */
214
+ export function throwIfIsNotNumberOrIsNaN(variable: any, name?: string): void;
215
+ /**
216
+ * 检查变量是否为仅包含非NaN数字的数组,如果不是则抛出类型错误
217
+ *
218
+ * @param {*} variable - 需要检查的变量
219
+ * @param {string} [name="variable"] - 变量名称,用于错误消息显示
220
+ * @param {string} [generalTerm=`all elements of ${name || "array"}`] - 通用术语,用于错误消息显示
221
+ * @throws {TypeError} 当变量不是数组或数组元素不符合要求时抛出错误
222
+ */
223
+ export function throwIfIsNumberArrayWithoutNaN(variable: any, name?: string, generalTerm?: string): void;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * 前向填充(forward-fill)输入数据,向前填充无效值。
3
+ *
4
+ * - 若输入为可迭代对象,将展开为迭代序列;若输入为非可迭代的对象,将包装为一个数组
5
+ * - 函数默认舍弃先导无效值,除非设置了`defaultValue`
6
+ * - 函数将以最近的上一次有效值填充无效值,无效值默认为 `undefined`
7
+ * - 函数默认使用`Object.is`进行判断无效值,因此可传入`NaN`,也请注意区分`-0`和`+0`
8
+ * - 对于传入的对象,函数不会进行拷贝,而是直接引用
9
+ *
10
+ * @template T
11
+ * @param {T | Iterable<T>} inputData - 输入数据(一个值或可迭代对象等)
12
+ * @param {{
13
+ * len?: number,
14
+ * invalidityChecker?: T | T[] | ((value: T) => boolean),
15
+ * defaultValue?: T
16
+ * checkDefaultValue?: boolean
17
+ * }} options
18
+ * @param options.len - 期望输出的元素总数,当 `len` 未提供时,输出长度 = 从第一个有效值开始到输入结束的长度,且不会自动扩展。
19
+ * @param options.invalidityChecker - 用于判断无效值的标准(默认: `undefined`)
20
+ * @param options.defaultValue - 若提供,则用以填充前导无效值,默认开启有效性检查。
21
+ * @param options.checkDefaultValue - 是否对 defaultValue 进行有效性检查(默认: `true`)
22
+ * @returns {T[]} 填充后的结果数组,长度不超过 `len`
23
+ *
24
+ * @example
25
+ * forwardFill("abc",{len:2}) //=> ["abc", "abc"]
26
+ * forwardFill(new String("abc")) // => ["a", "b", "c"]
27
+ * forwardFill([1, undefined, 3], { len: 5 }) // => [1, 1, 3, 3, 3]
28
+ * forwardFill(null, { len: 2, invalidityChecker: null, defaultValue: 0 }) // => [0, 0]
29
+ * forwardFill(new Map([[1,2],['a',2]])) // => [[1,2],['a',2]]
30
+ * const obj = {};forwardFill(obj,{len:2}) // => [obj, obj]
31
+ */
32
+ export function forwardFill<T>(inputData: T | Iterable<T>, options?: {
33
+ len?: number;
34
+ invalidityChecker?: T | T[] | ((value: T) => boolean);
35
+ defaultValue?: T;
36
+ checkDefaultValue?: boolean;
37
+ }): T[];
@@ -0,0 +1,173 @@
1
+ /**
2
+ * 本函数用于生成指定范围内的随机整数。包含边界。
3
+ * @param {number} a
4
+ * @param {number} b
5
+ * @returns {number} 属于 [min,max]
6
+ */
7
+ export function randomInt(a: number, b: number): number;
8
+ /**
9
+ * 本函数用于生成指定范围内的随机整数数组。
10
+ * @param {number} len
11
+ * @param {Iterable<number>} range 默认为[0,100]
12
+ * @returns {number[]} 每个元素属于[min,max]
13
+ */
14
+ export function randomInts(len: number, range?: Iterable<number>): number[];
15
+ /**
16
+ * 本函数用于生成指定范围内的随机浮点数。
17
+ * @param {number} a
18
+ * @param {number} b
19
+ * @returns {number} 属于 [min,max)
20
+ */
21
+ export function randomFloat(a: number, b: number): number;
22
+ /**
23
+ * 本函数用于生成指定范围内的随机浮点数数组。
24
+ * @param {number} len
25
+ * @param {Iterable<number>} range 默认为[0,1]
26
+ * @returns {number[]} 每个元素属于[min,max)
27
+ */
28
+ export function randomFloats(len: number, range?: Iterable<number>): number[];
29
+ /**
30
+ * 利用box-muller变换生成标准正态分布随机数
31
+ * @returns {number} 服从标准正态分布的随机数
32
+ */
33
+ export function randomGaussian(): number;
34
+ /**
35
+ * 生成标准正态分布随机数数组
36
+ * @param {number} len 数组长度
37
+ * @param {()=>number} generator 标准正态分布随机数生成器
38
+ * @returns
39
+ */
40
+ export function randomGaussians(len: number, generator?: () => number): number[];
41
+ /**
42
+ * 生成指定均值和标准差的正态分布随机数
43
+ * @param {number} mu 正态分布的均值
44
+ * @param {number} sigma 正态分布的标准差
45
+ * @param {()=>number} generator 标准正态分布随机数生成器
46
+ * @returns
47
+ */
48
+ export function randomNormal(mu?: number, sigma?: number, generator?: () => number): number;
49
+ /**
50
+ * 生成指定均值和标准差的正态分布随机数数组
51
+ * @param {number} len 数组长度
52
+ * @param {number} mu 正态分布的均值
53
+ * @param {number} sigma 正态分布的标准差
54
+ * @param {()=>number} generator 标准正态分布随机数生成器
55
+ * @returns {number[]}
56
+ */
57
+ export function randomNormals(len: number, mu?: number, sigma?: number, generator?: () => number): number[];
58
+ /**
59
+ * 生成指定维度和模长的随机向量
60
+ * @param {number} dim 生成向量的维度
61
+ * @param {number} mod 生成向量的模长
62
+ * @param {()=>number} generator 标准正态分布随机数生成器
63
+ * @returns {number[]}
64
+ */
65
+ export function randomVector(dim?: number, mod?: number, generator?: () => number): number[];
66
+ /**
67
+ * 生成指定数量的随机向量数组
68
+ * @param {number} len 需要生成的向量数量
69
+ * @param {number} dim 向量的维度,默认为2
70
+ * @param {number} mod 向量的模长,默认为1
71
+ * @param {()=>number} generator 随机数生成器函数,默认为randomGaussian
72
+ * @returns {number[][]} 包含len个随机向量的数组,每个向量都是指定维度和模长的数组
73
+ */
74
+ export function randomVectors(len: number, dim?: number, mod?: number, generator?: () => number): number[][];
75
+ /**
76
+ * 生成一个指定行列数的随机矩阵
77
+ * @param {number} rows 矩阵的行数,默认为2
78
+ * @param {number} cols 矩阵的列数,默认等于行数
79
+ * @param {(r: number, c: number) => number} generator 用于生成矩阵元素的函数,接收行列索引作为参数,默认生成0-10的随机整数
80
+ * @returns {number[][]} 二维数组表示的矩阵,大小为rows×cols
81
+ */
82
+ export function randomMatrix(rows?: number, cols?: number, generator?: (r: number, c: number) => number): number[][];
83
+ /**
84
+ * 生成指定数量的随机矩阵数组
85
+ * @param {number} len 需要生成的矩阵数量
86
+ * @param {number} rows 每个矩阵的行数
87
+ * @param {number} cols 每个矩阵的列数,默认等于行数
88
+ * @param {(r: number, c: number) => number} generator 用于生成矩阵元素的函数,接收行列索引作为参数,默认生成0-10的随机整数
89
+ * @returns {number[][][]} 包含len个矩阵的数组,每个矩阵都是二维数组
90
+ */
91
+ export function randomMatrices(len: number, rows?: number, cols?: number, generator?: (r: number, c: number) => number): number[][][];
92
+ /**
93
+ * 传入高斯随机数生成器,并生成对应的函数对象
94
+ * @param {()=>number} generator
95
+ * @returns {{
96
+ * randomGaussian: ()=>number,
97
+ * randomGaussians: (len:number)=>number[],
98
+ * randomNormal: (mu:number,sigma:number)=>number,
99
+ * randomNormals: (len:number,mu:number,sigma:number)=>number[],
100
+ * randomVector: (dim:number,mod:number)=>number[]
101
+ * }}
102
+ */
103
+ export function withGaussianGenerator(generator: () => number): {
104
+ randomGaussian: () => number;
105
+ randomGaussians: (len: number) => number[];
106
+ randomNormal: (mu: number, sigma: number) => number;
107
+ randomNormals: (len: number, mu: number, sigma: number) => number[];
108
+ randomVector: (dim: number, mod: number) => number[];
109
+ };
110
+ /**
111
+ * 传入矩阵元素生成器,并生成对应的矩阵操作函数对象
112
+ * @param {(r: number, c: number) => number} generator 用于生成矩阵元素的函数,接收行列索引作为参数
113
+ * @returns {{
114
+ * randomMatrix: (rows: number, cols: number) => number[][],
115
+ * randomMatrices: (len: number, rows: number, cols: number) => number[][][]
116
+ * }} 返回包含随机矩阵生成函数的对象
117
+ */
118
+ export function withMatrixGenerator(generator: (r: number, c: number) => number): {
119
+ randomMatrix: (rows: number, cols: number) => number[][];
120
+ randomMatrices: (len: number, rows: number, cols: number) => number[][][];
121
+ };
122
+ export function randomColor(): string;
123
+ export function randomColors(len: any): string[];
124
+ /**
125
+ * @template T
126
+ * @param {Iterable<T>} inputFlow
127
+ * @returns {T[]}
128
+ */
129
+ export function randomSort<T>(inputFlow: Iterable<T>): T[];
130
+ /**
131
+ * 简单随机选取一个样本
132
+ * @template T
133
+ * @param {Iterable<T>} inputFlow
134
+ * @returns {T}
135
+ */
136
+ export function randomPick<T>(inputFlow: Iterable<T>): T;
137
+ /**
138
+ * 简单放回抽样
139
+ * @template T
140
+ * @param {Iterable<T>} inputList
141
+ * @param {number} len
142
+ * @returns {T[]}
143
+ */
144
+ export function randomPicks<T>(inputList: Iterable<T>, len: number): T[];
145
+ /**
146
+ * 带权重的随机选取一个样本
147
+ * @template T
148
+ * @param {Map<T,number>} inputMap
149
+ * @returns {T}
150
+ */
151
+ export function randomChoice<T>(inputMap: Map<T, number>): T;
152
+ /**
153
+ * 带权重的放回抽样
154
+ * @template T
155
+ * @param {Map<T,number>} inputMap
156
+ * @param {number} len
157
+ * @returns {T[]}
158
+ */
159
+ export function randomChoices<T>(inputMap: Map<T, number>, len: number): T[];
160
+ /**
161
+ * 随机抽取样本,由于采用了蓄水池抽样,数据输出的顺序与原顺序相关联
162
+ * @template T
163
+ * @param {Iterable<T>} inputFlow
164
+ * @param {number} len
165
+ * @returns {T[]}
166
+ */
167
+ export function randomSample<T>(inputFlow: Iterable<T>, len: number): T[];
168
+ /**
169
+ * @template T
170
+ * @param {Iterable<T>} inputFlow
171
+ * @returns {T[]}
172
+ */
173
+ export function shuffle<T>(inputFlow: Iterable<T>): T[];
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 将字符串按照指定步长进行分块处理
3
+ * @param {string} input - 需要分块的输入字符串
4
+ * @param {number} step - 分块步长,必须为非零整数。正数表示从左到右分块,负数表示从右到左分块
5
+ * @returns {string[]} 返回分块后的字符串数组
6
+ * @throws {TypeError} 当input不是字符串或step不是整数时抛出
7
+ * @throws {RangeError} 当step为0时抛出
8
+ */
9
+ export function chunkString(input: string, step: number): string[];