o optics v2.0.0
Docs menu
API Getter

Getter

A Getter<S, A> reads exactly one value A from S.

type Getter<S, A> = {
  readonly _tag: 'getter'
  readonly get: (s: S) => A
}

Create A Getter

import { Getter } from '@fuiste/optics'

type Person = {
  firstName: string
  lastName: string
}

const fullName = Getter<Person, string>((person) => `${person.firstName} ${person.lastName}`)

Compose Read-Only Paths

import { Getter, Lens, compose } from '@fuiste/optics'

type Team = { lead: Person }

const lead = Lens<Team>().prop('lead')
const leadName = compose(lead, fullName)

leadName.get({
  lead: { firstName: 'Ada', lastName: 'Lovelace' },
})
// 'Ada Lovelace'

Notes

  • Getters do not have set.
  • Getter plus total focus remains Getter.
  • Getter plus partial or multiple focus becomes Fold.