Skip to content

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

License

Notifications You must be signed in to change notification settings

mesqueeb/getorset-anything

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Feb 19, 2025
2833c79 Β· Feb 19, 2025

History

26 Commits
Jun 1, 2024
Jun 1, 2024
Jun 1, 2024
Jun 1, 2024
Aug 28, 2022
Jun 1, 2024
Aug 28, 2022
Jan 4, 2023
Jun 1, 2024
Feb 19, 2025
Feb 19, 2025
Jun 1, 2024

Repository files navigation

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)