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

Package detail

getorset-anything

mesqueeb1.8kMIT1.0.2TypeScript support: included

Gets a value from a Map/Obj or sets an initial value when not found and returns that. TypeScript supported.

javascript, map, mapgetset, map-get-or-set, object-get-or-set, getorset-anything, get-or-set, js-map, typescript, map-setter, object-setter, obj-set-get, map-util, obj-util, setget, getset, getter-setter, setter-getter

readme

Get or Set Anything 🐊

Total Downloads Latest Stable Version

npm i getorset-anything

Get a Map/Obj value, or if it didn't exist yet set it and return that. Fully TypeScript supported! A simple & small integration.

Motivation

I created this package because I always hated doing this over and over again:

const map = new Map<string, number[]>()

const id = 'abc'

let arr = map.get(id)
if (arr === undefined) {
  arr = []
  map.set(id, arr)
}

arr.push(100)

So that is exactly what getorset-anything does for you! 💯

getorset-anything has performance in mind. It won't do a .has() check, like other libraries do, when it found the value it will immediately return it.

Usage

Maps

import { mapGetOrSet } from 'getorset-anything'

const map = new Map<string, number[]>()

const arr = mapGetOrSet(map, 'abc', (): number[] => [])

arr.push(100) // OK!

Objects

import { objGetOrSet } from 'getorset-anything'

const obj: Record<string, number[]> = {}

const arr = objGetOrSet(obj, 'abc', (): number[] => [])

arr.push(100) // OK!

TypeScript Support

You don't have to do anything extra for TypeScript! It comes with awesome type support.

import { mapGetOrSet } from 'getorset-anything'

const map = new Map<string, number[]>()

const arr = mapGetOrSet(map, 'abc', () => []) // OK!
const arr2 = mapGetOrSet(map, 'abc', () => ({})) // NG! ⛔️

arr.push(100) // OK!
arr.push('100') // NG! ⛔️

Meet the family (more tiny utils with TS support)