• Conceitos de P.O.O

Os atributos em nossas classes armazenam informações sobre nossos objetos instanciados. Em TS, assim como em outras linguagens O.O, os atributos podem ser declarados como public, private e protected:

Sintaxe
modificador_acesso nome_atributo: tipo_dado = valor; //iniciado
modificador_acesso nome_atributo: tipo_dado; //não iniciado
Onde
modificador_acesso: modificadores que permitem ou não a visibilidade do atributo

Por padrão, os atributos que não utilizam modificadores de acesso são públicos. Abaixo os modificadores discutidos anteriormente com seus respectivos acessos:

Tab. 1: Modificadores de acesso
Acesso public private protected
Mesma Classe Sim Sim Sim
Outra Classe Sim Não Não
Classe Herdada Sim Não Sim

Com o uso dos modificadores de acesso acima citados, aplicamos o conceito de encapsulamento dos atributos de nossos objetos, tornando-os visíveis de acordo com a necessidade.

Exemplo 1
class classe
{
    public atributo1:number = 0;
    private atributo2:string = '';

    private metodo1():void{}
    public metodo2():void{}
}
Saída
-

O modificador protected será melhor compreendido quando estivermos estudando o tópico sobre Herança.

O acesso aos atributos e métodos é feita de acordo com a tabela de modificadores de acesso vista acima e utilizando o operador de acesso (.) já visto.

Sintaxe
nome_objeto.nome_atributo;
Onde
-
Exemplo 2
class classe
{
    public atributo1:number = 0;
    private atributo2:string = '';
}

let obj = new classe();
console.log(obj.atributo1);
//console.log(obj.atributo2); //não acessível fora de 'classe'
Saída
-

Atributos com modificador de restrição static são atributos que irão existir independente de um objeto ser instanciado. Independente de quantos objetos instanciados, todos terão o mesmo atributo estático compartilhado.

Sintaxe: declaração
modificador_acesso static nome_atributo : tipo_dado;

A atribuição de um valor deve ser feito antes de seu uso. O acesso é feito utilizando o operador (.) como na sintaxe abaixo:

Exemplo 4
class Classe 
{
  static atributo: number = 1;
}
console.log(Classe.atributo);
Saída
1

TS permite que atributos de classe sejam declarados como constantes. Porém, a palavra const usada em constantes dá lugar a palavra readonly. Essa, permite que um atributo seja iniciado apenas uma vez proibindo alterações posteriores.

Sintaxe: declaração
modificador_acesso readonly nome_atributo : tipo_dado;
Exemplo 4
class Classe 
{
  readonly atributo: number;  //iniciado no construtor
  readonly atributo2: string = "string ts";

  constructor(){
    this.atributo = 10;
    //atributo2 iniciado na declaração
  }
}

let obj = new Classe();
console.log(obj.atributo);
console.log(obj.atributo2);

obj.atributo = 100;
Saída
10
string ts
Cannot assign to 'atributo' because it is a read-only property.

O this é uma palavra reservada da linguagem TS que diz que estamos fazendo referência à própria classe. Dessa forma, é possível distinguir de qual classe os recursos estão sendo acessados: própria classe ou uma classe pai(herdada).

Sintaxe
this.nome_atributo;
Exemplo 3
class classe
{
    public atributo1:number = 888;

    public metodo1():void
    {
        let atributo1:number = 999;

        console.log(this.atributo1) //atributo da classe1
        console.log(atributo1) //atributo local
    }
}

let obj = new classe();
obj.metodo1();
Saída
999
888

No exemplo acima, utilizamos um método para exemplificar o uso o this em uma mesma classe. Além do this, podemos utilizar o super com herança de classes concretas e abstratas.

  1. 28/08/2025 - revisão 2 - Ajustes: pontuais, exemplos, sintaxes, target de links; Adição: 'static' e 'readonly'
  2. 13/09/2024 - revisão 1 - remoção de texto repetido em intro, correção de sintaxes em intro, ajustes gerais
  3. 01/03/2024 - versão inicial