import type { S } from 'ts-toolbelt'; /** 持久化存储键名的集合 */ export type StorageKeys = { readonly [K in Extract]: `${string}-${S.Replace, '_', '-'>}`; }; /** * 获取持久化存储键名的集合 * * @export * @template O extends Obj * @param {Required} object 持久化存储的键名枚举 * @param {string} app 项目识别码 `ENV.VITE_APP_KEY` * @param {string} mode 运行模式 `ENV.VITE_MODE` */ export function getStorageKeys(object: Required, app: string, mode: string) { return Object.keys(object).reduce>( (prev, curr) => { const key = curr.toLocaleLowerCase().split('_').join('-'); return { ...prev, [curr]: curr === 'TOKEN' ? `${app}-${key}` : `${app}-${mode}-${key}`, }; }, {} as unknown as StorageKeys, ); }