Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mesqueeb/getorset-anything
Gets a value from a Map/Obj or sets an initial value when not found and returns that. TypeScript supported.
https://github.com/mesqueeb/getorset-anything
getorset-anything getset getter-setter js-map map map-get-or-set map-setter map-util mapgetset obj-set-get obj-util object-get-or-set object-setter setget setter-getter typescript
Last synced: 3 months ago
JSON representation
Gets a value from a Map/Obj or sets an initial value when not found and returns that. TypeScript supported.
- Host: GitHub
- URL: https://github.com/mesqueeb/getorset-anything
- Owner: mesqueeb
- License: mit
- Created: 2022-08-28T03:56:40.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-05T01:27:54.000Z (7 months ago)
- Last Synced: 2024-09-23T03:41:55.455Z (3 months ago)
- Topics: getorset-anything, getset, getter-setter, js-map, map, map-get-or-set, map-setter, map-util, mapgetset, obj-set-get, obj-util, object-get-or-set, object-setter, setget, setter-getter, typescript
- Language: TypeScript
- Homepage: https://npmjs.com/getorset-anything
- Size: 1.16 MB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
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:
```ts
const map = new Map()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
```ts
import { mapGetOrSet } from 'getorset-anything'const map = new Map()
const arr = mapGetOrSet(map, 'abc', (): number[] => [])
arr.push(100) // OK!
```Objects
```ts
import { objGetOrSet } from 'getorset-anything'const obj: Record = {}
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.
```ts
import { mapGetOrSet } from 'getorset-anything'const map = new Map()
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)
- [is-what 🙉](https://github.com/mesqueeb/is-what)
- [is-where 🙈](https://github.com/mesqueeb/is-where)
- [merge-anything 🥡](https://github.com/mesqueeb/merge-anything)
- [check-anything 👁](https://github.com/mesqueeb/check-anything)
- [remove-anything ✂️](https://github.com/mesqueeb/remove-anything)
- [getorset-anything 🐊](https://github.com/mesqueeb/getorset-anything)
- [map-anything 🗺](https://github.com/mesqueeb/map-anything)
- [filter-anything ⚔️](https://github.com/mesqueeb/filter-anything)
- [copy-anything 🎭](https://github.com/mesqueeb/copy-anything)
- [case-anything 🐫](https://github.com/mesqueeb/case-anything)
- [flatten-anything 🏏](https://github.com/mesqueeb/flatten-anything)
- [nestify-anything 🧅](https://github.com/mesqueeb/nestify-anything)