Hyperlinkv0.8.0-beta.28

Record

Record.getSomesconsteffect/Record.ts:824
<K extends string, A>(self: ReadonlyRecord<K, Option.Option<A>>): Record<
  ReadonlyRecord.NonLiteralKey<K>,
  A
>

Returns a new record containing only the Some values from a record of Option values, preserving the original keys.

Example (Extracting Some values)

import { Option, Record } from "effect"
import * as assert from "node:assert"

assert.deepStrictEqual(
  Record.getSomes({ a: Option.some(1), b: Option.none(), c: Option.some(2) }),
  { a: 1, c: 2 }
)
filtering
Source effect/Record.ts:82414 lines
export const getSomes: <K extends string, A>(
  self: ReadonlyRecord<K, Option.Option<A>>
) => Record<ReadonlyRecord.NonLiteralKey<K>, A> = <K extends string, A>(
  self: ReadonlyRecord<K, Option.Option<A>>
): Record<ReadonlyRecord.NonLiteralKey<K>, A> => {
  const out: Record<string, A> = empty()
  for (const key of keys(self)) {
    const option = self[key]
    if (Option.isSome(option)) {
      out[key] = option.value
    }
  }
  return out
}