DEV Community

Cover image for Já conhece os acessores automáticos no TypeScript?
Lucas Santos
Lucas Santos

Posted on • Originally published at blog.lsantos.dev on

Já conhece os acessores automáticos no TypeScript?

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!

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;
    }
}

Enter fullscreen mode Exit fullscreen mode

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;
    }
}

Enter fullscreen mode Exit fullscreen mode

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)

typescript

11 Tips That Make You a Better Typescript Programmer

1 Think in {Set}

Type is an everyday concept to programmers, but it’s surprisingly difficult to define it succinctly. I find it helpful to use Set as a conceptual model instead.

#2 Understand declared type and narrowed type

One extremely powerful typescript feature is automatic type narrowing based on control flow. This means a variable has two types associated with it at any specific point of code location: a declaration type and a narrowed type.

#3 Use discriminated union instead of optional fields

...

Read the whole post now!

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay