export function counterIter(start = 0, end = Infinity) { let i = start let ended = false const iter: IterableIterator = { [Symbol.iterator]: () => iter, next() { if (ended) { return { value: undefined, done: true } } if (i > end) { return { value: undefined, done: true } } return { value: i++, done: false } }, } return { iter, end: () => { ended = true }, } }