© 2026 Hedgehog Software, LLC
{ boxes: [{ box: { name: 'Box', isOpen: true } }] }
{ boxes: [{ name: 'Box', isOpen: true }] }
BooleanFromString
const StringBoolean = Schema.Literal('on', 'off') const BooleanFromString = Schema.transform(StringBoolean, Schema.Boolean, { strict: true, decode: (value) => value === 'on', encode: (value) => (value ? 'on' : 'off'), }) export class Box extends Schema.Class<Box>('Box')({ isOpen: BooleanFromString, }) {} const BoxFromWrapper = Schema.transform(Schema.Struct({ box: Box }), Box, { strict: true, decode: ({ box }) => ({ isOpen: box.isOpen ? ('on' as const) : ('off' as const), }), encode: (box) => ({ box: { isOpen: box.isOpen === 'on' } }), }) export class Container extends Schema.Class<Container>('Container')({ boxes: Schema.Array(BoxFromWrapper), }) {}
boxes: Schema.Array(Schema.propertySignature(Box).pipe(Schema.fromKey(“box”)))