DEV Community

Mauricio Aires
Mauricio Aires

Posted on

Angular 18 - Modificadores de acesso

Quais são as vantagens e desvantagens de usar readonly em serviços injetados em comparação com uma declaração sem readonly? Considerando o exemplo abaixo, em que situações é recomendável declarar o serviço como readonly?

private toastService = inject(ToastService);
// ou
private readonly toastService = inject(ToastService);

Top comments (1)

Collapse
 
wldomiciano profile image
Wellington Domiciano

O modificador readonly garante que, uma vez inicializada, a propriedade jamais mudará seu valor ao longo de seu ciclo de vida.

Eu recomendo e gosto de aplicar readonly sempre, pois, para mim, me passa mais segurança de que eu nunca vou conseguir reatribuir um valor, mesmo que por acidente, à uma propriedade.

O mesmo vale para const. Sempre que eu olho para uma propriedade com readonly ou uma variável com const eu já sinto que me tira um peso da mente, porque é uma preocupação a menos que eu preciso ter.

Usando o seu contexto, o cenário em que usar readonly não seria adequando é se vc, conscientemente, precisa alterar o valor da propriedade em algum momento dentro da sua classe. Mas tem que ver se não há uma solução melhor, vc teria que ter um motivo extremamente bom para fazer isso, senão seu código poderia ficar mais complexo do que o necessário.

Algumas pessoas podem argumentar contra o uso do readonly dizendo que o código fica mais verboso, mas eu acho que o código mais verboso é um preço pequeno a se pagar pelas garantias que o readonly nos dá.