Skip to content

huan/async-map-like

Repository files navigation

async-map-like

NPM Version NPM TypeScript

ECMAScript Map like type definition (plus Async).

Async ES6 Map Like TypeScript Interface

It has same API Interface with Map - JavaScript | MDN, with additional Async support.

Usage

import { MapLike } from 'async-map-like'

const mapLike: MapLike<string, number> = new Map<string, number>

That's it, enjoy the Duck Typing!

API Reference

/**
 * ES6 Map like Async API
 */
export interface AsyncMapLike<K = any, V = any> {

  size : Promise<number>

  get     (key: K)           : Promise<V | undefined>
  set     (key: K, value: V) : Promise<void>
  has     (key: K)           : Promise<boolean>
  delete  (key: K)           : Promise<void>
  clear   ()                 : Promise<void>

  entries () : AsyncIterableIterator<[K, V]>
  keys    () : AsyncIterableIterator<K>
  values  () : AsyncIterableIterator<V>

  [Symbol.asyncIterator]() : AsyncIterableIterator<[K, V]>

  forEach (
    callbackfn: (
      value : V,
      key   : K,
      map   : AsyncMapLike<K, V>,
    ) => void,
    thisArg?: AsyncMapLike<K, V>,
  ): Promise<void>

}

History

master v1.0 (Nov 27, 2021)

  1. Remove sync interface: [Symbol.toStringTag]() and [Symbol.iterator]()
  2. Add async interface: [Symbol.asyncIterator]()

v0.2 (July 25, 2020)

  1. Create MapLike interface for ES6 Map
  2. Create AsyncMapLike for ES6 Map like Async interface

Author

Huan LI (李卓桓), Microsoft AI MVP, [email protected]

Profile of Huan LI (李卓桓) on StackOverflow

Copyright & License

  • Docs released under Creative Commons
  • Code released under the Apache-2.0 License
  • Code & Docs © 2018 Huan LI <[email protected]>