Shapes are checked contracts
Inference retains known fields; a declaration can publish the shape callers may use.
age?: integer permits a missing field; age: integer? permits null.
Records are closed; [Person] describes an array. Input contracts validate loaded JSON.
Structures keep JSON storage. An explicit
value contract hides field
precision; callers then need extraction such as as_integer.