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.

32 lines (30 loc) 968 B
import { hasKey, isRecord } from '../../../guard/index.mjs'; import { ErrTypeTagName, OkTypeTagName, WarnTypeTagName } from './tag.mjs'; /** * Checks whether the provided value is a {@link TernaryResult}. * * @example * * ```ts * const okValue = TernaryResult.ok('done'); * * const warnValue = TernaryResult.warn('done', 'retry later'); * * const notResult = { $$tag: 'ts-data-forge::Result.ok' }; * * assert.isTrue(TernaryResult.isTernaryResult(okValue)); * * assert.isTrue(TernaryResult.isTernaryResult(warnValue)); * * assert.isFalse(TernaryResult.isTernaryResult(notResult)); * ``` */ export const isTernaryResult = ( maybeResult: unknown, ): maybeResult is UnknownTernaryResult => isRecord(maybeResult) && hasKey(maybeResult, '$$tag') && hasKey(maybeResult, 'value') && ((maybeResult.$$tag === WarnTypeTagName && hasKey(maybeResult, 'warning')) || maybeResult.$$tag === OkTypeTagName || maybeResult.$$tag === ErrTypeTagName);