import { useState } from 'react'; const useSetState = (initialState: T = {} as T): [T, (patch: Partial | (() => void)) => void] => { const [state, set] = useState(initialState); const setState = patch => { set(prevState => Object.assign({}, prevState, patch instanceof Function ? patch(prevState) : patch)); }; return [state, setState]; }; export default useSetState;