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.

28 lines (26 loc) 865 B
import { Optional } from '../../optional/index.mjs'; import { isOk } from './ternary-result-is-ok.mjs'; import { isWarn } from './ternary-result-is-warn.mjs'; import { type UnwrapOk } from './types.mjs'; /** * Converts a `TernaryResult` into an `Optional` by keeping only Ok values. * * @example * * ```ts * const okValue = TernaryResult.ok(7); * * const warnValue = TernaryResult.warn(7, 'warn'); * * assert.deepStrictEqual(TernaryResult.toOptional(okValue), Optional.some(7)); * * assert.deepStrictEqual(TernaryResult.toOptional(warnValue), Optional.some(7)); * ``` */ export const toOptional = <R extends UnknownTernaryResult>( result: R, ): Optional<UnwrapOk<R>> => isOk(result) || isWarn(result) ? // eslint-disable-next-line total-functions/no-unsafe-type-assertion Optional.some(result.value as UnwrapOk<R>) : Optional.none;