UNPKG

ts-data-forge

Version:

[![npm version](https://img.shields.io/npm/v/ts-data-forge.svg)](https://www.npmjs.com/package/ts-data-forge) [![npm downloads](https://img.shields.io/npm/dm/ts-data-forge.svg)](https://www.npmjs.com/package/ts-data-forge) [![License](https://img.shields.

36 lines (31 loc) 908 B
import { isOk } from './ternary-result-is-ok.mjs'; import { isWarn } from './ternary-result-is-warn.mjs'; import { type UnwrapOk } from './types.mjs'; /** * Safely unwraps the Ok value. * * @example * * ```ts * const okValue = TernaryResult.ok(3); * * const warnValue = TernaryResult.warn(4, 'warn'); * * assert.strictEqual(TernaryResult.unwrapOk(okValue), 3); * * assert.strictEqual(TernaryResult.unwrapOk(warnValue), 4); * ``` */ export function unwrapOk<R extends TernaryOk<unknown>>(result: R): UnwrapOk<R>; export function unwrapOk<R extends UnknownTernaryResult>( result: R, ): UnwrapOk<R> | undefined; export function unwrapOk<R extends UnknownTernaryResult>( result: R, ): UnwrapOk<R> | undefined { if (isOk(result) || isWarn(result)) { // eslint-disable-next-line total-functions/no-unsafe-type-assertion return result.value as UnwrapOk<R>; } return undefined; }