An open API service indexing awesome lists of open source software.

https://github.com/t99/iter-over

Sugary iteration utilities and interfaces.
https://github.com/t99/iter-over

async-iterable async-iterables async-iteration async-iterator async-iterators for-await for-await-of for-each for-in for-of iterable iterables iteration iterator iterators typescript

Last synced: 11 months ago
JSON representation

Sugary iteration utilities and interfaces.

Awesome Lists containing this project

README

          

iter-over



iter-over is an iteration toolset for JavaScript/TypeScript that provides interfaces as well as utility classes for
iteration using the native JavaScript Symbol.iterator method (and Symbol.asyncIterator!).

Find iter-over on NPM.

## Table of Contents

- [Installation](#installation)
- [Basic Usage](#basic-usage)
- [Documentation](#documentation)
- [License](#license)

## Installation
Install from NPM with
```
$ npm install --save iter-over
```

## Basic Usage
For most use-cases you'll want to extend `AbstractIterator` (the iter-over abstract iterator class). This abstract class
implements such methods as `#forEachRemaining(callback)` and automagically implements the `[Symbol.iterator]` method so
that you don't have to!

The only methods you have to implement are:

```typescript
public hasNext(): boolean { ... }
public next(): E | undefined { ... }
```

So for example, an inline implementation would look something like:

```typescript
import { AbstractIterator } from "iter-over";

class MyCounter extends AbstractIterator {

private val: number = 0;

public hasNext(): boolean {

return (this.val <= 9);

}

public next(): number {

return this.val++;

}

}
```

Once you've done that, you can freely use the iterator as such:

```typescript
let counter: MyCounter = new MyCounter();

for (let counterVal of counter) console.log(counterVal);

// ...console logs 0 through 9.
```

## Documentation
Full documentation can be found [here](https://t99.github.io/iter-over/)!

## License
iter-over is made available under the GNU General Public License v3.

Copyright (C) 2021 Trevor Sears