# typescript-map

> ES6 Map Implemented in TypeScript

Latest version **0.1.0** (published 2020-12-27) · MIT license · 0 weekly downloads

## Install

```sh
npm install typescript-map
pnpm add typescript-map
yarn add typescript-map
bun add typescript-map
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2020-12-27 |
| First published | 2016-12-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 31.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Scott Lott @only_cliches |
| Maintainers | clicksimply |
| Keywords | collection, es6, shim, harmony, list, hash, map, polyfill, ponyfill, ecmascript, typescript, generics, data, structures, collections, dictionary, tree, stack, queue, set |

## Links

- npm: https://www.npmjs.com/package/typescript-map
- Repository: https://github.com/only_cliches/typescript-map
- Homepage: https://github.com/only_cliches/typescript-map#readme
- Issues: https://github.com/only_cliches/typescript-map/issues
- npm.io page: https://npm.io/package/typescript-map

## Alternatives

- [gamedig](https://npm.io/package/gamedig.md) — 29.3K weekly downloads
- [join-monster](https://npm.io/package/join-monster.md) — 12.8K weekly downloads
- [masked](https://npm.io/package/masked.md) — 5.5K weekly downloads
- [@comunica/actor-query-process-explain-logical](https://npm.io/package/@comunica/actor-query-process-explain-logical.md) — 4.7K weekly downloads
- [@veracity/vui](https://npm.io/package/@veracity/vui.md) — 4.6K weekly downloads

## Recent versions

- 0.1.0 (latest) — 2020-12-27
- 0.0.7 — 2019-01-21
- 0.0.6 — 2018-04-16
- 0.0.5 — 2017-10-18
- 0.0.4 — 2017-06-22
- 0.0.3 — 2017-01-08
- 0.0.2 — 2016-12-28
- 0.0.1 — 2016-12-28

## 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](https://www.npmjs.com/package/es6-map) instead.

# Installation
`npm install typescript-map`

The lib creates a single global variable: `TSMap`

If you're using typescript/ES6:
```ts
import { TSMap } from "typescript-map"
```

If you're using commonjs:
```ts
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


```ts
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

```ts
// 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](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)

# Building
`npm install && npm run build`

# License
MIT

---
_Source: https://npm.io/package/typescript-map · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
