UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

55 lines (53 loc) 1.1 kB
import { FnError } from "../function/FnError.js"; import { dfdlT } from "@monstermann/dfdl"; import { cloneMap } from "@monstermann/remmi"; //#region src/map/removeOrThrow.ts /** * `removeOrThrow(map, key)` * * Removes the entry with the specified `key` from `map`, throwing an error if the key doesn't exist. * * ```ts * removeOrThrow( * new Map([ * ["a", 1], * ["b", 2], * ]), * "a", * ); // Map(1) { "b" => 2 } * * removeOrThrow( * new Map([ * ["a", 1], * ["b", 2], * ]), * "c", * ); // throws FnError * ``` * * ```ts * pipe( * new Map([ * ["a", 1], * ["b", 2], * ]), * removeOrThrow("a"), * ); // Map(1) { "b" => 2 } * * pipe( * new Map([ * ["a", 1], * ["b", 2], * ]), * removeOrThrow("c"), * ); // throws FnError * ``` */ const removeOrThrow = dfdlT((target, key) => { if (!target.has(key)) throw new FnError("Map.removeOrThrow: Key does not exist.", [target, key]); const result = cloneMap(target); result.delete(key); return result; }, 2); //#endregion export { removeOrThrow };