StorageType表示浏览器存储类型的字符串字面量类型。
export type StorageType = 'localStorage' | 'sessionStorage'
const storage: StorageType = 'localStorage'
StorageConfig<T>useAppStorage 函数的完整配置对象类型。
export interface StorageConfig<T = unknown> {
key: string
defaultValue: T
prefix: string
storage: StorageType
}
key: 存储项的唯一键名defaultValue: 默认值prefix: 键名前缀,用于创建命名空间storage: 存储类型,localStorage 或 sessionStorageStorageConfigInput<T>useAppStorage 函数的输入配置对象类型,prefix 和 storage 为可选参数。
export type StorageConfigInput<T = unknown> = Partial<Omit<StorageConfig<T>, 'key' | 'defaultValue'>> & {
key: string
defaultValue: T
}
import type { StorageConfigInput } from '@movk/core'
import { useAppStorage } from '@movk/core'
const config: StorageConfigInput<{ theme: string }> = {
key: 'user-preferences',
defaultValue: { theme: 'light' },
storage: 'localStorage', // 可选
prefix: 'app' // 可选
}
const storage = useAppStorage(config)
AppStorageReturn<T>useAppStorage 函数的返回对象接口。
export interface AppStorageReturn<T> {
state: Ref<T>
getItem: () => T
setItem: (value: T) => void
removeItem: () => void
}
state: 响应式引用,与存储数据同步getItem: 从存储中读取数据setItem: 设置新值到存储removeItem: 从存储中移除项import type { AppStorageReturn } from '@movk/core'
import { useAppStorage } from '@movk/core'
const storage: AppStorageReturn<string> = useAppStorage({
key: 'my-key',
defaultValue: 'hello'
})
// 使用响应式状态
console.log(storage.state.value) // 'hello'
// 更新值
storage.setItem('world')
// 读取值
const value = storage.getItem() // 'world'
// 移除项
storage.removeItem()