type UpdateEntity = (state: (prevState: Readonly) => S) => void; export const numberValue = (value: number) => (isNaN(value) ? '' : value.toString()); export const extractEventValue = (event: React.ChangeEvent) => { switch (event.target.type) { case 'number': return event.target.valueAsNumber; case 'checkbox': return event.target.checked; default: return event.target.value; } }; export const updateValue = (updateEntity: UpdateEntity) => (event: React.ChangeEvent) => { updateEntity((prevState) => ({ ...prevState, [event.target.name]: extractEventValue(event) })); };