const createStorageProxy = (target = {}, type: 'local' | 'session') => { const storage = type === 'local' ? localStorage : sessionStorage; return new Proxy(target, { get(obj: Record<string, any>, prop: string) { const value = storage.getItem(prop); return value !== null ? JSON.parse(value) : obj[prop]; }, set(obj: Record<string, any>, prop: string, value: any) { if (value === undefined) { storage.removeItem(prop); } else { storage.setItem(prop, JSON.stringify(value)); } obj[prop] = value; return true; }, }); }; export const LocalStorage = createStorageProxy({}, 'local'); export const SessionStorage = createStorageProxy({}, 'session');
使用方法:
存:
LocalStorage.userInfo = { name: 'Ysera' }