MediumPro challengePythonJavaScriptTypeScript
Form Reducer
ReducersStatePatterns
Implement a form reducer handling these actions:
{ type: 'change', field, value }— update single field.{ type: 'reset' }— back to initial.{ type: 'submit' }— setsubmitted: true.
State shape: { values: {...}, submitted: boolean }.
solve(initialValues, actions) returns final state.
Sample tests
Test #1Change one field
Input: [{"name":""},[{"type":"change","field":"name","value":"Alice"}]]
Output: {"values":{"name":"Alice"},"submitted":false}
Test #2Change then reset
Input: [{"a":"x"},[{"type":"change","field":"a","value":"y"},{"type":"reset"}]]
Output: {"values":{"a":"x"},"submitted":false}
Test #3Submit
Input: [{"x":""},[{"type":"submit"}]]
Output: {"values":{"x":""},"submitted":true}
Test #4Multi-field then submit
Input: [{"a":"","b":""},[{"type":"change","field":"a","value":"1"},{"type":"change","field":"b","value":"2"},{"type":"submit"}]]
Output: {"values":{"a":"1","b":"2"},"submitted":true}
Test #5No actions
Input: [{"k":"init"},[]]
Output: {"values":{"k":"init"},"submitted":false}