import {ref, Ref, unref, UnwrapRef} from 'vue'; import {SetStateAction, useState} from "./index"; import {IHookStateInitAction, resolveHookState} from "./misc/hookState"; import {ToRef} from "./useState"; export type SetPatchStateAction = (patch: Partial | ((prevState: T) => Partial)) => void export default function useSetState(value: T): [ToRef, SetPatchStateAction] export default function useSetState(value: IHookStateInitAction): [Ref, SetPatchStateAction] export default function useSetState(value: T): [ToRef, SetPatchStateAction] export default function useSetState(): [Ref, SetPatchStateAction] export default function useSetState(initialState?: unknown) { const state = ref(resolveHookState(initialState)); const setState = (patch) => { state.value = Object.assign({}, state.value, resolveHookState(patch, state.value)) }; return [state, setState]; }; declare type A = { name: string, id: string } const [state, setState] = useSetState({ name: '123', id: '123' }); setState({name:'123'}); setState(() => ({name:'123'}));