mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-11 09:03:29 +01:00
chore: remove repetitive words Signed-off-by: avoidaway <cmoman@126.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
62 lines
1.2 KiB
TypeScript
62 lines
1.2 KiB
TypeScript
/**
|
|
* Options for creating a range
|
|
*/
|
|
export interface RangeOptions {
|
|
/**
|
|
* The end of the range (exclusive)
|
|
*/
|
|
end: number;
|
|
/**
|
|
* The start of the range (inclusive)
|
|
*/
|
|
start: number;
|
|
/**
|
|
* The amount to increment by
|
|
*
|
|
* @defaultValue `1`
|
|
*/
|
|
step?: number;
|
|
}
|
|
|
|
/**
|
|
* A generator to yield numbers in a given range
|
|
*
|
|
* @remarks
|
|
* This method is end-exclusive, for example the last number yielded by `range(5)` is 4. If you
|
|
* prefer for the end to be included add 1 to the range or `end` option.
|
|
* @param range - A number representing the range to yield (exclusive) or an object with start, end and step
|
|
* @example
|
|
* Basic range
|
|
* ```ts
|
|
* for (const number of range(5)) {
|
|
* console.log(number);
|
|
* }
|
|
* // Prints 0, 1, 2, 3, 4
|
|
* ```
|
|
* @example
|
|
* Range with a step
|
|
* ```ts
|
|
* for (const number of range({ start: 3, end: 10, step: 2 })) {
|
|
* console.log(number);
|
|
* }
|
|
* // Prints 3, 5, 7, 9
|
|
* ```
|
|
*/
|
|
export function* range(range: RangeOptions | number) {
|
|
let rangeEnd: number;
|
|
let start = 0;
|
|
let step = 1;
|
|
|
|
if (typeof range === 'number') {
|
|
rangeEnd = range;
|
|
} else {
|
|
start = range.start;
|
|
rangeEnd = range.end;
|
|
step = range.step ?? 1;
|
|
}
|
|
|
|
for (let index = start; index < rangeEnd; index += step) {
|
|
yield index;
|
|
}
|
|
}
|