_comuns/src/local/index.ts
2026-04-15 12:24:38 -03:00

31 lines
893 B
TypeScript
Executable file

/**
* LocalStorage Tipado
* Lê ou grava um valor no localStorage, mantendo o tipo genérico <T>.
*/
export const localValor = <T>(chave_: string | any, valor?: T | null): T | null => {
const localStorage = "localStorage" in globalThis ? (globalThis as any).localStorage : undefined
if (typeof localStorage == "undefined") return null
const chave = typeof chave_ === "string" ? chave_ : encodeURIComponent(JSON.stringify(chave_))
try {
// Grava valor se fornecido
if (valor !== undefined) {
localStorage.setItem(chave, JSON.stringify(valor))
}
// Lê valor
const v2 = localStorage.getItem(chave)
if (v2 === null) return null
try {
return JSON.parse(v2) as T
} catch {
// Caso o valor não seja JSON válido
return v2 as unknown as T
}
} catch {
// Em caso de erro de acesso ao localStorage
return null
}
}