UNPKG

@ryanuo/utils

Version:

提供多种实用工具函数,涵盖算法、浏览器操作、网络请求等多个领域

66 lines (65 loc) 2 kB
/** * @category SafeStorage */ interface StorageOptions { /** * Storage type, either 'local' or 'session' * @default 'local' */ storage?: 'local' | 'session'; /** * Expiration time in milliseconds * @default undefined (no expiration) */ expires?: number; } /** * @category SafeStorage */ export interface SafeStorage { /** * Get stored value by key * @param key Storage key * @returns Stored value or null if not found/expired */ get: (<T>(key: string) => T | null) & (<T>(key: string, options: StorageOptions) => T | null); /** * Set value in storage * @param key Storage key * @param value Value to store * @returns true if successful, false otherwise */ set: ((key: string, value: any) => boolean) & ((key: string, value: any, options: StorageOptions) => boolean); /** * Remove item from storage * @param key Storage key */ remove: ((key: string) => void) & ((key: string, options: StorageOptions) => void); /** * Clear all items from storage */ clear: (() => void) & ((options: StorageOptions) => void); } /** * A simple storage wrapper that uses localStorage and sessionStorage. * @example * ```ts twoslash * import { safeStorage } from '@ryanuo/utils' * // Basic usage (localStorage) * safeStorage.set('user', { name: 'John' }) * const user = safeStorage.get<{ name: string }>('user') * // With sessionStorag * safeStorage.set('token', 'abc123', { storage: 'session' }) * const token = safeStorage.get<string>('token', { storage: 'session' }) * // With expiration (1 hour) * safeStorage.set('tempData', { foo: 'bar' }, { expires: 3600000 }) * // Remove from sessionStorag * safeStorage.remove('token', { storage: 'session' }) * // Clear sessionStorag * safeStorage.clear({ storage: 'session' }) * ``` * @category SafeStorage */ declare const safeStorage: SafeStorage; export { safeStorage }; export type { StorageOptions };