DEV Community

Cover image for O que são annotations?
Cristian Magalhães
Cristian Magalhães

Posted on

O que são annotations?

Eae gente bonita, beleza?

Dessa vez eu vim aqui falar um pouco para vocês sobre as annotations ou decorators . Elas são muito comuns em linguagens como Java, C# e em frameworks como Angular e NestJS. Em algum momento da sua vida você vai ver uma e precisar usar também, então é sempre bom saber onde vivem? O que comem?

gif entendendo

O que são?

Annotations são funções que podem ser usadas em classes, métodos ou atributos.
As annotations tem a seguinte assinatura @ seguido do nome da anotação.

@Table(name = "person")
class Person {
  @Id
  id: number;

  @IsNotNull
  name: string;
}
Enter fullscreen mode Exit fullscreen mode

Você pode perceber que no exemplo acima temos duas annotations. A annotation @Table() recebe um parâmetro chamado name enquanto as outras não recebem nada e nem ao menos tem parenteses. E é assim mesmo que a coisa funciona. Isso pode depender da linguagem que você estiver usando. Na dúvida leia a documentação da linguagem.

gif

Para que servem?

As annotations podem servir para diferentes casos, como no exemplo acima a annotation @Table() serve para dizer que essa classe se refere a tabela de nome pessoa. Enquanto a annotation @id diz ao banco que aquele campo é uma chave primária e por fim a annotation @IsNotNull diz ao banco que aquela coluna é não nula.

Geralmente as annotations são disponibilizadas por frameworks para facilitar a configuração. É bem comum os ORM's disponibilizarem esse tipo de artifício para fazer as configurações, assim evitando criar arquivos de configurações e agilizando o desenvolvimento.

É importante dizer que não só ORM's os usam as annotaions. Por exemplo, você pode usar o @test para dizer que aquele método é um teste e para várias outras coisas no Java.

É importante mencionar também que você pode criar as suas próprias annotations para fazer o que você quiser, nesse link você pode ver como fazer isso no NestJS.


Se chegou até aqui, me segue la nas redes vizinhas.

Top comments (0)