Files
introduction-to-testing/examples/accident-counter/src/reducer.ts
2024-09-16 15:44:34 -06:00

30 lines
577 B
TypeScript

type CounterState = {
count: number;
};
type CounterAction =
| { type: 'increment' }
| { type: 'decrement' }
| { type: 'reset' };
export function reducer(
state: CounterState = { count: 0 },
action: CounterAction,
): CounterState {
if (!action) return state;
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
case 'decrement':
if (state.count > 0) {
return { count: state.count - 1 };
}
return { count: 0 };
case 'reset':
return { count: 0 };
default:
return state;
}
}