getorset-anything
v1.0.1
Published
Gets a value from a Map/Obj or sets an initial value when not found and returns that. TypeScript supported.
Downloads
3,719
Maintainers
Readme
Get or Set Anything 🐊
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! ⛔️