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. Getterplus total focus remainsGetter.Getterplus partial or multiple focus becomesFold.