Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resolução

const status = 'aprovado';

switch (status) {
    case 'pendente':
        console.log('Pagamento pendente');
        break;
    case 'aprovado':
        console.log('Pagamento aprovado');
        break;
    case 'recusado':
        console.log('Pagamento recusado');
        break;
    default:
        console.log('Opção invalída');
        break;
}
2 respostas
solução!

Oii, José Luiz.

Sua resolução ficou excelente. Você aplicou a estrutura do switch perfeitamente, respeitando a sintaxe e a lógica do exercício.

Gostei muito de ver que você incluiu o bloco default. Mesmo que o exercício básico às vezes não exija, em sistemas reais isso é essencial. É o que chamamos de programação defensiva: se chegar um status desconhecido ou um erro de banco de dados, seu sistema não quebra silenciosamente, ele avisa que a opção é inválida.

Uma dica extra para tornar seu código ainda mais robusto: o JavaScript diferencia letras maiúsculas de minúsculas (Case Sensitive).

Isso significa que, no seu código atual, se a variável status recebesse "Aprovado" (com A maiúsculo), o switch não reconheceria o caso "aprovado" e cairia no default.

Para evitar isso em sistemas reais, costumamos padronizar o texto antes de verificar, usando o método .toLowerCase():

// Converte tudo para minúsculo antes de testar
switch (status.toLowerCase()) {
    case 'pendente':
        // ... restante do código
}

Dessa forma, "Aprovado", "APROVADO" ou "aprovado" funcionariam da mesma maneira.

Continue aplicando essas boas práticas.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
const statusPagamento = 'aprovado';

switch (statusPagamento.toLowerCase()) {
    case 'pendente':
        console.log('Pagamento pendente');
        break;
    case 'aprovado':
        console.log('Pagamento aprovado');
        break;
    case 'recusado':
        console.log('Pagamento recusado');
        break;
    default:
        console.log('Opção invalída');
        break;
}

Adicionei o método para converte tudo para minúsculo antes de testar e troquei o nome da variável "status" para "statusPagamento", pois obtive conhecimento que a palavra "status" é reterido = deprecated = desaconselhado para uso.

O problema vem do TypeScript + DOM.

No TypeScript (especialmente com lib.dom.d.ts):

status já existe como uma propriedade global

Está ligada a:

window.status

document.status (antigo / legado)

Essas APIs antigas do navegador foram marcadas como deprecated.

Então o TypeScript avisa:

“Você está usando um nome que colide com algo antigo do DOM.”

Usar a palavra "status" no JavaScript não irá gerar erro, porém é recomendado renomear a variável.