Skip to content
A library of lazy, efficient, generic collections for TypeScript.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


🚧 Ongoing Active Development
See usages in the Wiki. Check out what has been implemented so far and what's to come in the roadmap.

Collection.ts is a collection framework providing lazy, efficient, and generic collections for TypeScript.

Collection.ts cannot exist without the Poly-collection framework on Scala. 🌹


  • Hash map and hash sets (and other keyed/hashed structures) support custom classes, as long as an equivalence strategy (an Eq<K> for the key type K) and a hashing strategy (a Hash<K>) are provided. A related interface, Ord<K>, is provided for custom ordering definitions.

  • Almost all higher-order functions (e.g., map, flatMap, filter, reduce, ...) are lazy. This means that these transformations only define (instead of create) a new collection. No actual computation will happen until the elements in the new collection are accessed.

  • The higher-order functions return the most specific abstract type possible sa their results. For example, a map operation on ArraySeq will not return another ArraySeq (as in Scala), or merely Iterable (as in C#). It will return RandomAccessSeq, which is the most fine-grained abstract class possible for ArraySeqs. This is an idea borrowed from Poly-collection.

  • Easy conversion between Collection.ts collections and TypeScript/JavaScript collections. This allows easy integration with any current project.

  • TypeScript/JavaScript for of support. The fact that the Iterable class in Collection.ts implements the Iterable of JavaScript ensures that a user can operate on Collection.ts structures in the most natural way.


Collection.ts is written with TypeScript 2.2.1.

You can’t perform that action at this time.