Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre Enum - TypeScript

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Aqui estou criando um protótipo de um projeto simples em TypeScript no Front-end no qual desejo salvar as informações de um form dentro de uma classe no Ts e exibir no console.log do navegador, mas quando executo este comando, quando ele cria a instância da classe, a Enum que deveria retornar uma string (como "Engenheiro", "Arquiteto", etc.) de acordo com a forma como criei ela no arquivo cargo.ts (arquivo aberto na parte da direita), está me retornando ao invés disso o número correspondente ao cargo que eu escolhi no select do HTML. Eu queria que retornasse a string correspondente ao cargo assim como está especificado na minha enum, mas ele está retornando o número, o que poderia estar ocasionando isso? (A organização dos arquivos está ruim propositalmente, para fins de estudo).

1 resposta
solução!

Olá Phelipe!

O problema que você está enfrentando é comum quando se trabalha com enums em TypeScript. Quando você usa inputCargo.value as Cargo, o TypeScript está interpretando o valor como o índice numérico do enum, não como a string que você definiu.

Para resolver isso, você pode fazer o seguinte:

  1. Certifique-se de que o valor do seu <select> no HTML seja exatamente igual às strings definidas no seu enum. Por exemplo:

    <select id="cargo">
      <option value="ENGENHEIRO">Engenheiro</option>
      <option value="ARQUITETO">Arquiteto</option>
      <option value="PROFESSOR">Professor</option>
      <option value="VENDEDOR">Vendedor</option>
      <option value="MARCENEIRO">Marceneiro</option>
      <option value="COZINHEIRO">Cozinheiro</option>
    </select>
    
  2. No seu código TypeScript, você pode simplesmente atribuir o valor do input diretamente, já que ele será uma string correspondente ao valor do enum:

    let cargo: Cargo = inputCargo.value as Cargo;
    

Dessa forma, o valor do select será diretamente mapeado para o valor string do enum, evitando a conversão para o índice numérico.

Espero ter ajudado e bons estudos!