@monstermann/fn
Version:
A utility library for TypeScript.
69 lines (67 loc) • 1.23 kB
JavaScript
import { FnError } from "../function/FnError.js";
import { dfdlT } from "@monstermann/dfdl";
//#region src/map/getOrThrow.ts
/**
* `getOrThrow(map, key)`
*
* Gets the value associated with `key` from `map`, throwing an error if the key doesn't exist or the value is nullable.
*
* ```ts
* getOrThrow(
* new Map([
* ["a", 1],
* ["b", 2],
* ]),
* "a",
* ); // 1
*
* getOrThrow(
* new Map([
* ["a", 1],
* ["b", null],
* ]),
* "b",
* ); // throws FnError
*
* getOrThrow(
* new Map([
* ["a", 1],
* ["b", 2],
* ]),
* "c",
* ); // throws FnError
* ```
*
* ```ts
* pipe(
* new Map([
* ["a", 1],
* ["b", 2],
* ]),
* getOrThrow("a"),
* ); // 1
*
* pipe(
* new Map([
* ["a", 1],
* ["b", null],
* ]),
* getOrThrow("b"),
* ); // throws FnError
*
* pipe(
* new Map([
* ["a", 1],
* ["b", 2],
* ]),
* getOrThrow("c"),
* ); // throws FnError
* ```
*/
const getOrThrow = dfdlT((target, key) => {
const value = target.get(key);
if (value != null) return value;
throw new FnError(`Map.getOrThrow: Value not found.`, [target, key]);
}, 2);
//#endregion
export { getOrThrow };