Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

typescript-map

only_cliches35.8kMIT0.1.0TypeScript support: included

ES6 Map Implemented in TypeScript

collection, es6, shim, harmony, list, hash, map, polyfill, ponyfill, ecmascript, typescript, generics, data, structures, collections, dictionary, tree, stack, queue, set

readme

typescript-map

ES6 Map implemented in TypeScript.

This is not an ES6 Map polyfill, it is not a pure implementation (but it's really close!). I just needed a way to declare maps in my ts code in a safe, reusable way without taking dozens of kilobytes.

Just over 1 kilobyte gzipped. :)

Note: This library doesn't use a hashing function to keep the implmentation small and simple, this means if you plan to put more than a few hundred keys into the map or if the map is on a hot path you should use es6-map instead.

Installation

npm install typescript-map

The lib creates a single global variable: TSMap

If you're using typescript/ES6:

import { TSMap } from "typescript-map"

If you're using commonjs:

const TSMap = require("typescript-map").TSMap;

If you're just using it in the browser:

  1. Download dist/tsmap.min.js

  2. Include it in your head: <script src="tsmap.min.js"></script>.

Usage

var myMap = new TSMap();
myMap.set('foo','bar');
console.log(myMap.get('foo')) //<= "bar"

//Typescript
var myMap = new TSMap<string,number>();
myMap.set('foo',2);

//ES6 Maps take an array of arrays as the optional init object:
var myMap = new TSMap([
    ['foo','bar'],
    ['key','value']
])

Also includes several functions that aren't in the spec

// Safely retrieve a deeply nested object, works for nested TSMaps, objects and arrays.
let someValue = myMap.deepGet(["deeply","nested","property"]);

// Insert items keeping the keys sorted (Uses a super fast binary insert method)
myMap.sortedSet(5, "apple");
myMap.sortedSet(2, "orange");
myMap.sortedSet(7, "bannana");
console.log(myMap.keys()) // <= [2, 5, 7];

//Import JSON into the map
var myMap = new TSMap().fromJSON({
    foo:'bar',
    key:'value'
}, true); // <= optional second parameter, if "true" nested objects should be converted to TSMaps.

//Export the map to JSON
var myJSON = myMap.toJSON();

//Map the map (insert meme here).  Returns an array, not the map.
var anArray = myMap.map(function(value, key) {
    return value + " oh look, another hippy".
});

//Filter the map (removes items in the current map)
myMap.filter(function(value, key) {
    return key%2; //Remove all even objects;
});

Everything is documented in the src/index.ts file and the definitions file is pretty clear. If you need a full doc on using Maps look here: MDN Map Docs

Building

npm install && npm run build

License

MIT

changelog

0.0.7

  • Merged PR.
  • Updated dependencies.
  • Fixed issue 3.

0.0.6

  • Fixed sortedSet bug.
  • Updated dependencies

0.0.5

  • Added sortedSet method that forces the keys to remain sorted as you insert items.

0.0.4

  • Cleaned up code a bit.
  • Added deepGet property.
  • toJSON and fromJSON work with nested TSMaps now
  • Optimized several of the looping functions.
  • Upgraded to newest Typescript lib.
  • Updated readme.

0.0.3

  • Cleaned up Readme.
  • First "official" release.
  • 100% TSLinte compliant.
  • Adjusted several functions to allow chaining.