ziterable
TypeScript icon, indicating that this package has built-in type declarations

1.2.2 • Public • Published

ziterable

standard-readme compliant license NPM version TypeScript types lines of code

Generic, variadic, iterable zip.

Sometimes you want to iterate over several ES6 Iterables at once, but writing your own zip function can be annoying and it's hard to get it to work with TypeScript well. ziterable is a tiny package that does exactly this so that you don't have to think about it.

The source code is 25 lines of code and the package has no dependencies. You need TypeScript 4.0+ and downlevelIteration must be enabled if your target is ES5 or earlier.

Table of Contents

Install

npm i ziterable

Usage

ziterable default exports a function zip that takes as many Iterables as you want to pass it, and it returns an iterable of tuples that are typed like you'd hope. The iterable that zip returns yields iterators that terminate when the first of its component iterators terminates.

For example, if you pass zip three arguments of type Iterable<string>, Iterable<number>, and Iterable<boolean>, it will return an iterable of type Iterable<[string, number, boolean, number]>. The last tuple slot is the iteration index.

import zip from "ziterable"

const A = [4, 5, 1, 9]
const B = ["foo", "bar", "baz"]
const C = [true, true, false]

const print = (a: number, b: string, c: boolean) =>
  console.log(a, b, c)

for (const [a, b, c, i] of zip(A, B, C)) {
  console.log("index", i)
  print(a, b, c)
}

Contributing

PRs accepted!

License

MIT © 2020 Joel Gustafson

Readme

Keywords

none

Package Sidebar

Install

npm i ziterable

Weekly Downloads

0

Version

1.2.2

License

MIT

Unpacked Size

4.61 kB

Total Files

5

Last publish

Collaborators

  • joelg