2
respostas

Erro durante conversão dos dados do localstorage para JSON

A linha de códigoa abaixo usada para criar o array de Transacoes está dando erro para mim devido a possibilidade de o localstorage poder estar vazio e receber um valor "nulo". A mensagem que aparece é esta: "O argumento do tipo 'string | null' não é atribuível ao parâmetro do tipo 'string'. O tipo 'null' não pode ser atribuído ao tipo 'string' "

const transacoes: Transacao[] = JSON.parse( localStorage.getItem("transacoes")) || [];

Então para contornar o erro tive que fazer esta modificação:

const transacoesJSON = localStorage.getItem('transacoes');
let transacoes: Transacao[] = [];

if (transacoesJSON !== null) {
  transacoes = JSON.parse(transacoesJSON, (key: string, value: string) => { 
    if (key === 'data') {       
        return new Date(value);       
    }

    return value;
    });
}
2 respostas

Valeu demais por compartilhar, vou testar aqui no meu que ta dando erro!

ABs

Consegui fazer funcionar de outra maneira colocando "||" após a chamada do "getItem". Pelo que eu entendi, o "parse" espera receber uma string para poder conveter, e como "getItem" pode retornar "null", então joguei a condição para dentro do parse.

saldo: number = JSON.parse(localStorage.getItem('saldo') || '0');
transacoes: Transacao[] = JSON.parse(localStorage.getItem('transacoes') || '[]')