1
resposta

[Dúvida] Preciso declarar os componentes dos forms como String?

Eu realmente precisoo declará-los como string e só depois converter? Ou teria como já declará-los como seus respectivos tipos diretamente. A dúvida seria na parte abaixo:

export class FormNovaTransacaoComponent {
  tipoTransacao = "";
  valorTransacao = "";

  transacaoCriada = output();

  aoSubmeter(){
    const transacao = new Transacao(
      this.tipoTransacao as TipoTransacao,
      Number(this.valorTransacao)
    );
    this.transacaoCriada.emit();

    this.tipoTransacao = "";
    this.valorTransacao = "";
  }

}

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá amigo.
Sim, você precisa declará-los como string (ou ao menos aceitar string), porque os valores vindos de campos de formulário HTML são sempre string.
Mesmo que você esteja lidando com, por exemplo, um número (valorTransacao) ou um enum (tipoTransacao), quando o dado vem de um HTML, ele sempre será uma string.
Se você quiser já declarar valorTransacao como number, funciona, mas não é recomendado.
Veja:

valorTransacao: number = 0;

O Angular ainda vai passar uma string vinda do input.
O que acontece é que o Angular vai tentar fazer a conversão implícita, e isso pode funcionar para tipos simples (como number), mas não é confiável ou explícito o suficiente, principalmente se o tipo for mais complexo (como um enum ou objeto).
Com enums, então, a conversão ainda dependeria do tipo que você usa no HTML (string ou number).
O correto mesmo e mais simples é: declará-los como string .
Qualquer duvida comente ai.
Bons estudos.