diff --git a/src/useToggle.ts b/src/useToggle.ts index c0ed795..dc774ca 100644 --- a/src/useToggle.ts +++ b/src/useToggle.ts @@ -1,23 +1,23 @@ -import { ref, Ref } from 'vue' +import { ref, Ref, DeepReadonly, readonly } from 'vue' export type ToggleParamType = string | number | boolean | undefined | null -export interface ToggleReturn { - state: Ref +export interface ToggleReturn { + state: DeepReadonly> toggle: (next?: boolean) => void setDefault: () => void setRight: () => void } export interface ITwoType - extends Omit, 'state' | 'toggle'> { - state: Ref + extends Omit { + state: DeepReadonly> toggle: (next?: T | U) => void } export interface IToggle { - (): ToggleReturn - (defaultValue: T): ToggleReturn + (): ToggleReturn + (defaultValue: boolean): ToggleReturn ( defaultValue: T, resetValue?: U @@ -27,7 +27,7 @@ export interface IToggle { export const useToggle: IToggle = < T extends ToggleParamType = ToggleParamType, U extends ToggleParamType = ToggleParamType ->( +> ( defaultValue: T = false as T, reverseValue?: U ) => { @@ -48,7 +48,7 @@ export const useToggle: IToggle = < state.value = reverseTo } return { - state, + state: readonly(state), setDefault, setRight, toggle