1
resposta

[Dúvida] Ainda não entendi os Decorators

Já tentei ver a documentação do próprio TypeScript, explicação de IA, rever a aula, mas ainda assim não consegui entender eles, nem para o que servem.

1 resposta

Oi, Oscar! Tudo bem?

É super normal achar decorators confusos no começo. Eles realmente parecem “mágicos” à primeira vista. Mas quando a gente entende a ideia principal, tudo começa a fazer mais sentido.

Pensa no decorator como se fosse um porteiro de um prédio.

O método depositar() é como alguém tentando entrar no prédio. Antes de deixar a pessoa entrar (ou seja, antes de executar o método), o porteiro verifica se ela atende a uma regra, por exemplo, se está na lista de convidados.

No seu caso, o @ValidaDeposito funciona exatamente assim:

  • Ele fica “na porta” do método depositar.
  • Antes do método rodar de verdade, ele verifica: o valor é maior que zero?
  • Se não for, ele bloqueia a entrada (lança um erro).
  • Se for válido, ele deixa passar e o método original é executado normalmente.

Tecnicamente, o que está acontecendo é:

  1. O decorator pega o método original (originalMethod) que está no descriptor.
  2. Ele substitui esse método por uma nova função.
  3. Essa nova função faz a validação primeiro.
  4. Se estiver tudo certo, ela chama o método original com originalMethod.apply(this, [valorDoDeposito]).
  5. Por fim, retorna o descriptor atualizado.

Outra forma de imaginar é como um plugin ou extensão: você não altera o funcionamento interno da classe diretamente, mas “acopla” um comportamento extra de forma declarativa, usando @ValidaDeposito acima do método. Isso deixa o código mais organizado e reutilizável.

Então, sempre que você vê algo como:

@ValidaDeposito
depositar(valor: number) { ... }

Pode pensar:
“Antes de rodar esse método, algo vai acontecer aqui no meio do caminho.”

E é exatamente esse “algo no meio do caminho” que o decorator define.

Com o tempo, você vai perceber que decorators são uma forma elegante de adicionar regras e comportamentos sem poluir o método principal com muitas responsabilidades.

Espero que agora tenha ficado um pouco mais claro. Conte com nosso apoio!

Abraços e bons estudos :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado