effect-io-ai

Package: effect
Module: Option

Option.toRefinement

Converts an Option-returning function into a type guard (refinement).

When to use

Use when you need to turn an Option-returning parser into a type-narrowing predicate, such as for Array.prototype.filter.

Details

Example (Converting a parser to a type guard)

import { Option } from "effect"

type MyData = string | number

const parseString = (data: MyData): Option.Option<string> =>
  typeof data === "string" ? Option.some(data) : Option.none()

//      ┌─── (a: MyData) => a is string
//      ▼
const isString = Option.toRefinement(parseString)

console.log(isString("a"))
// Output: true

console.log(isString(1))
// Output: false

See

Signature

declare const toRefinement: <A, B extends A>(f: (a: A) => Option<B>) => (a: A) => a is B

Source

Since v2.0.0