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!
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.name = 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.
Top comments (0)