{"id":14997,"library":"typescript-map","title":"TypeScript Map Implementation","description":"This library, `typescript-map`, provides a lightweight, TypeScript-first implementation of an ES6 Map-like data structure. Currently at version 0.1.0, it is designed for scenarios where a full ES6 Map polyfill is not desired or where bundle size is a critical concern, weighing in at just over 1 kilobyte gzipped. A key differentiator is its deliberate simplicity: it does not employ a hashing function. While this keeps the implementation small and straightforward, it means the library is explicitly *not* recommended for use with more than a few hundred keys or in performance-critical \"hot path\" operations, where native `Map` or more robust alternatives like `es6-map` would be superior. The release cadence appears to be slow or inactive given the low version number and its niche purpose. It is primarily intended for TypeScript projects needing a basic, type-safe map collection without significant overhead.","status":"maintenance","version":"0.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/only_cliches/typescript-map","tags":["javascript","collection","es6","shim","harmony","list","hash","map","polyfill"],"install":[{"cmd":"npm install typescript-map","lang":"bash","label":"npm"},{"cmd":"yarn add typescript-map","lang":"bash","label":"yarn"},{"cmd":"pnpm add typescript-map","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"The primary class is a named export, not a default export. For TypeScript and modern JavaScript (ESM).","wrong":"import TSMap from 'typescript-map'","symbol":"TSMap","correct":"import { TSMap } from 'typescript-map'"},{"note":"For CommonJS environments, access the `TSMap` class from the module's property.","wrong":"const { TSMap } = require('typescript-map');","symbol":"TSMap","correct":"const TSMap = require('typescript-map').TSMap;"},{"note":"When used directly in a browser without a module loader, the library exposes `TSMap` as a global variable. Be mindful of global scope pollution.","symbol":"TSMap","correct":"<script src=\"tsmap.min.js\"></script> // Then use global TSMap"}],"quickstart":{"code":"import { TSMap } from 'typescript-map';\n\n// Basic usage, similar to native Map\nconst myMap = new TSMap();\nmyMap.set('foo', 'bar');\nconsole.log(myMap.get('foo')); // Prints: bar\n\n// With TypeScript generics for type safety\nconst typedMap = new TSMap<string, number>();\ntypedMap.set('apple', 1);\ntypedMap.set('banana', 2);\nconsole.log(typedMap.get('apple')); // Prints: 1\n\n// Initialize with an array of key-value pairs\nconst initMap = new TSMap<string, string>([\n  ['key1', 'valueA'],\n  ['key2', 'valueB']\n]);\nconsole.log(initMap.size); // Prints: 2\n\n// Example of a custom function: fromJSON\nconst jsonMap = new TSMap().fromJSON({\n    name: 'Alice',\n    age: 30,\n    city: 'New York'\n}, false);\nconsole.log(jsonMap.get('name')); // Prints: Alice","lang":"typescript","description":"Demonstrates basic instantiation, setting and getting values, type-safe usage with generics, initialization with an array, and a custom `fromJSON` method."},"warnings":[{"fix":"If a full ES6 Map polyfill is required, use `es6-map` or a similar solution. This library is an alternative for specific use cases.","message":"This library is not an ES6 Map polyfill. It provides a similar interface but is a separate implementation. Do not expect it to patch `Map` or behave identically to the native `Map` specification in every edge case.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"For large datasets or 'hot path' scenarios, use the native `Map` object or a robust polyfill/library that employs hashing (e.g., `es6-map`).","message":"Performance will degrade significantly for maps containing hundreds or thousands of keys, or when used in performance-critical code paths. The implementation does not use a hashing function to keep it small and simple.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Prefer using module bundlers (like Webpack or Rollup) with ES modules or CommonJS imports to encapsulate the library's scope and avoid global variable conflicts.","message":"When included directly in a browser via a `<script>` tag, the `TSMap` class is exposed as a global variable. This can lead to global namespace pollution or conflicts with other libraries.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"last_verified":"2026-04-19T00:00:00.000Z","next_check":"2026-07-18T00:00:00.000Z","problems":[{"fix":"Ensure you are instantiating the class with `new TSMap()` and that your CommonJS import is `const TSMap = require('typescript-map').TSMap;`.","cause":"Attempting to call `TSMap` directly without the `new` keyword, or incorrect CommonJS import.","error":"TypeError: TSMap is not a constructor"},{"fix":"Verify that `TSMap` has been correctly imported and instantiated (e.g., `const myMap = new TSMap();`).","cause":"Trying to call methods on an uninitialized or incorrectly imported `TSMap` instance.","error":"Error: Cannot read properties of undefined (reading 'set')"},{"fix":"This library is not a polyfill for the native `Map`. If native `Map` compatibility is required, consider using `es6-map` or adapting your code to accept `TSMap` where appropriate, or converting `TSMap` to a standard object if only basic iteration is needed.","cause":"Passing a `TSMap` instance to a function or API that specifically expects a native `Map` object.","error":"Argument of type 'TSMap<string, number>' is not assignable to parameter of type 'Map<string, number>'"}],"ecosystem":"npm"}