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.
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.
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:
depositar.Tecnicamente, o que está acontecendo é:
originalMethod) que está no descriptor.originalMethod.apply(this, [valorDoDeposito]).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 :)