Skip to content

or

or<A, C>(second): <B>(first) => Refinement<A, C | B>

Defined in: Core/Refinement.ts:113

Unions two refinements: the result narrows A to B | C, passing when either refinement holds.

Data-last — the first refinement is the data being piped.

A

C

Refinement<A, C>

<B>(first): Refinement<A, C | B>

B

Refinement<A, B>

Refinement<A, C | B>

const isString:  Refinement<unknown, string>  = Refinement.make(x => typeof x === "string");
const isNumber:  Refinement<unknown, number>  = Refinement.make(x => typeof x === "number");

const isStringOrNumber = pipe(isString, Refinement.or(isNumber));
isStringOrNumber("hi"); // true
isStringOrNumber(42);   // true
isStringOrNumber(true); // false