Hyperlinkv0.8.0-beta.28

Record

Record.mapconsteffect/Record.ts:619
<K extends string, A, B>(f: (a: A, key: NoInfer<K>) => B): (
  self: ReadonlyRecord<K, A>
) => Record<K, B>
<K extends string, A, B>(
  self: ReadonlyRecord<K, A>,
  f: (a: A, key: NoInfer<K>) => B
): Record<K, B>

Maps a record into another record by applying a transformation function to each of its values.

Example (Mapping record values)

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

const f = (n: number) => `-${n}`

assert.deepStrictEqual(Record.map({ a: 3, b: 5 }, f), { a: "-3", b: "-5" })

const g = (n: number, key: string) => `${key.toUpperCase()}-${n}`

assert.deepStrictEqual(Record.map({ a: 3, b: 5 }, g), { a: "A-3", b: "B-5" })
mapping
Source effect/Record.ts:61913 lines
export const map: {
  <K extends string, A, B>(f: (a: A, key: NoInfer<K>) => B): (self: ReadonlyRecord<K, A>) => Record<K, B>
  <K extends string, A, B>(self: ReadonlyRecord<K, A>, f: (a: A, key: NoInfer<K>) => B): Record<K, B>
} = dual(
  2,
  <K extends string, A, B>(self: ReadonlyRecord<K, A>, f: (a: A, key: NoInfer<K>) => B): Record<K, B> => {
    const out: Record<K, B> = { ...self } as any
    for (const key of keys(self)) {
      out[key] = f(self[key], key)
    }
    return out
  }
)
Referenced by 3 symbols