@ryanuo/utils
Version:
提供多种实用工具函数,涵盖算法、浏览器操作、网络请求等多个领域
66 lines (65 loc) • 2 kB
TypeScript
/**
* @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 };