---
name: type
kind: syntax
since: 0.1
stability: stable
---

Record type declaration.

```axon
type Name {
  field_a: String,
  field_b: Integer
}
```

Each `field: TypeExpr` line declares a named field. Fields are
mandatory unless suffixed with `?` (optional). Types are nominal —
two `type` declarations with identical fields are still distinct.

Use `type` for any structurally shaped value crossing a flow,
channel, or persistence boundary; the type checker uses these
declarations to enforce field presence, shape, and refinement
constraints downstream.
