Skip to content

Instantly share code, notes, and snippets.

@itsMapleLeaf
Created July 23, 2021 15:37
Show Gist options
  • Save itsMapleLeaf/8ff55dd5bf2eedb5e62ea361059e4710 to your computer and use it in GitHub Desktop.
Save itsMapleLeaf/8ff55dd5bf2eedb5e62ea361059e4710 to your computer and use it in GitHub Desktop.
range with a union of tuples for args
type RangeArgs =
| [end: number]
| [start: number, end: number]
| [start: number, end: number, step: number]
function* range(...args: RangeArgs): Generator<number> {
let start: number
let end: number
let step = 1
if (args.length === 1) {
;[start, end] = [0, args[0]]
} else if (args.length === 2) {
;[start, end] = args
} else if (args.length === 3) {
;[start, end, step] = args
}
for (let i = start; i < end; i += step) {
yield i
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment