O TypeScript tem várias funcionalidades super interessantes que poucas pessoas conhecem, uma dessas funcionalidades é o uso de auto-accessors em classes.
Presente desde o TypeScript 4.9, ela também é uma funcionalidade que está descrita na proposta original de decorators (que inclusive a gente já falou sobre aqui).
Vem aprender comigo!
Quer aprender mais sobre criptografia e boas práticas com #TypeScript?
Se inscreva na Formação TS!Essencialmente, essa sintaxe funciona da seguinte maneira, quando temos um acessor, geralmente temos um método get
que traz uma variável interna de uma classe, por exemplo:
class Pessoa {
#__nome: string;
get name() {
return this.#__nome;
}
set name(val: string) {
this.#__nome = val;
}
constructor(nome: string) {
this.nome = nome;
}
}
Percebe que a gente tem não uma, mas 7 linhas só para poder criar um acessor que vai setar e obter a variável interna #__nome
? Seria muito melhor se a gente pudesse fazer tudo isso de uma vez, e é pra isso que os auto-accessors existem. Tudo isso que eu escrevi pode virar isso aqui:
class Person {
accessor nome: string;
constructor(nome: string) {
this.nome = nome;
}
}
Por baixo dos panos, o que os acessores automáticos vão fazer é exatamente o que fizemos no primeiro código, eles vão expandir o nome
para uma variável privada interna da classe, e uma variável externa acessível somente por um getter e um setter.
No geral, essa feature não é algo muito relacionado à lógica, mas sim a qualidade de vida, especialmente quando vamos criar decorators que precisam de vários getters e setters.