Ir al contenido
angel.library

JSON.parse seguro con Result

src/lib/json.ts
type Result<T> = { ok: true; data: T } | { ok: false; error: SyntaxError }
export function safeJsonParse<T = unknown>(input: string): Result<T> {
try {
return { ok: true, data: JSON.parse(input) as T }
} catch (error) {
return {
ok: false,
error:
error instanceof SyntaxError ? error : new SyntaxError("JSON inválido")
}
}
}
const result = safeJsonParse(localStorage.getItem("settings") ?? "")
if (!result.ok) localStorage.removeItem("settings")

El genérico solo ayuda al editor; no valida la estructura. Si el JSON cruza un límite de confianza, parsealo como unknown y pasalo por Zod antes de usarlo.