Hyperlinkv0.8.0-beta.28

Record

Record.setconsteffect/Record.ts:1040
<K extends string | symbol, K1 extends K | ((string | symbol) & {}), B>(
  key: K1,
  value: B
): <A>(self: ReadonlyRecord<K, A>) => Record<K | K1, A | B>
<
  K extends string | symbol,
  A,
  K1 extends K | ((string | symbol) & {}),
  B
>(
  self: ReadonlyRecord<K, A>,
  key: K1,
  value: B
): Record<K | K1, A | B>

Adds a new key-value pair or update an existing key's value in a record.

Example (Setting a record value)

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

assert.deepStrictEqual(Record.set("a", 5)({ a: 1, b: 2 }), { a: 5, b: 2 })
assert.deepStrictEqual(Record.set("c", 5)({ a: 1, b: 2 }), { a: 1, b: 2, c: 5 })
mutations
Source effect/Record.ts:104020 lines
export const set: {
  <K extends string | symbol, K1 extends K | ((string | symbol) & {}), B>(
    key: K1,
    value: B
  ): <A>(self: ReadonlyRecord<K, A>) => Record<K | K1, A | B>
  <K extends string | symbol, A, K1 extends K | ((string | symbol) & {}), B>(
    self: ReadonlyRecord<K, A>,
    key: K1,
    value: B
  ): Record<K | K1, A | B>
} = dual(
  3,
  <K extends string | symbol, A, K1 extends K | ((string | symbol) & {}), B>(
    self: ReadonlyRecord<K, A>,
    key: K1,
    value: B
  ): Record<K | K1, A | B> => {
    return { ...self, [key]: value } as any
  }
)