UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

69 lines (67 loc) 1.23 kB
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 };