ts-data-forge
Version:
[](https://www.npmjs.com/package/ts-data-forge) [](https://www.npmjs.com/package/ts-data-forge) [ • 907 B
JavaScript
import { isRecord } from '../../../guard/is-record.mjs';
import { SomeTypeTagName, NoneTypeTagName } from './tag.mjs';
/**
* Checks if the given value is an {@link Optional}.
*
* @example
*
* ```ts
* const maybeOptional = Optional.some('value');
*
* const notOptional = { $$tag: 'ts-data-forge::Optional.some' };
*
* assert.isTrue(Optional.isOptional(maybeOptional));
*
* assert.isFalse(Optional.isOptional(notOptional));
* ```
*
* @param maybeOptional The value to check.
* @returns `true` if the value is an {@link Optional}, otherwise `false`.
*/
const isOptional = (maybeOptional) => isRecord(maybeOptional) &&
Object.hasOwn(maybeOptional, '$$tag') &&
((maybeOptional['$$tag'] === SomeTypeTagName &&
Object.hasOwn(maybeOptional, 'value')) ||
maybeOptional['$$tag'] === NoneTypeTagName);
export { isOptional };
//# sourceMappingURL=optional-is-optional.mjs.map