• Conceitos de P.O.O

Em TS classes, representam o esqueleto de objetos, são declaradas utilizando um modificador de acesso, a palavra reservada class e um nome de classe. Classes podem possuir métodos, atributos, enums e constantes.

Sintaxe
class nome_classe {
    //corpo
}
Onde
class: palavra reservada para informar que a definição do tipo de dados é uma classe.
nome_classe: nome da classe que desejamos criar
Exemplo 1
class classe
{
    //corpo
}
Saída
-

A criação de objetos ou instanciação de objetos na linguagem TS é feita utilizando a palavra reservada new como pode ser visto na sintaxe abaixo:

Sintaxe
let nome_objeto = new nome_classe()

Quando instanciamos um objeto utilizado a sintaxe acima, estamos invocando o método construtor padrão. Esse assunto será visto mais adiante em Métodos.

Exemplo 2
class nome_classe {
    //corpo
}
let classe = new nome_classe()
Saída
-

As classes que possuem codificação são chamadas de classes concretas. Além de classe concreta, a linguagem TS possui suporte à classes abstratas que serão vistas em Classe Abstrata .

Para declaração de atributos ou campos que irão guardar informações sobre nossos objetos, utilizamos os tipos de dados disponíveis pela linguagem TS e que foram vistos TypeScript: Tipos de Dados e também classes nativas.

Tanto os métodos quanto atributos de uma classe possuem modificadores de acesso que serão vistos em Encapsulamento e Herança.

Sintaxe
nome_atributo: tipo_dado;
Exemplo 3
class nome_classe 
{
    atributo1:number; //undefined
    atributo2:string; //undefined
}
let obj = new nome_classe();
Saída
-

O acesso aos atributos de uma classe é feito utilizando o operador e acesso (.) como pode ser visto na sintaxe abaixo:

Sintaxe
nome_objeto.nome_atributo;

nome_objeto.nome_atributo = valor;
Exemplo 4
class nome_classe 
{
    atributo1:number = 1; 
    atributo2:string; //undefined
}
let obj = new nome_classe();
console.log(obj.atributo1);
Saída
1

Em Métodos vamos aprender a iniciar os atributos de uma classe por meio do métodos construtores que recebe argumentos.

Os métodos declarados em uma classe são funções que pertencem apenas às classes e são invocados por um instância ou objeto. O assunto método será visto em Métodos e Sobrecarga.

Sintaxe
modificador_acesso nome_metodo( <lista_argumentos> ){
    //corpo
}
Exemplo 5
class classe
{
    metodo(param:number):number 
    {
        return param*2;
    }
}
Saída
-

Os modificadores de acesso tanto para atributos quanto para métodos serão vistos em Encapsulamento.

Uma classe anônima em TS é uma classe que é atribuída à uma variável durante sua declaração utilizando a palavra reservada new como visto acima.

Sintaxe
nome_variavel = new class {
    //atributos
    //métodos
}

Quando usamos a sintaxe acima, estamos declarando e instanciando um objeto sem que a classe possua um nome. Esse tipo de classe é usada quando precisamos de um objeto mas não precisamos definir uma classe que será reusada.

Exemplo 6
let objeto = new class {
    //atributos omitidos
    metodo(){
        //omitido
    } 
}
console.log(typeof(objeto));
objeto.metodo();
Saída
"object" 

TS ainda não permite a declara de classes dentro de classes, também conhecidas como classes internas ou aninhadas. Para isso, precisamos simular uma classe utilizando um atributo estático:

Sintaxe
static atributo = class {
    //atributos
    //métodos
}
Exemplo 7
class Classe {
    //omitido
    static ClasseInterna = class {
        //atributos omitidos
        metodo(){
            //omitido
        }
    }
}

let interna = new Classe.ClasseInterna();
console.log(typeof(interna));
Saída
"object" 

Utilizando o operador instanceof podemos verificar se um objeto é de um determinado tipo ou não. Esse operador também pode ser utilizado com interfaces.

Sintaxe
nome_objeto istanceof nome_classe
Retorno
true se é instancia, false caso contrário
Exemplo 8
class classe1{
    //corpo
}

class classe2{
    //corpo
}

let obj1 = new classe1();
let obj2 = new classe2();

console.log(obj1 instanceof classe1)
console.log(obj2 instanceof classe1)
console.log(obj2 instanceof classe2)
Saída
true 
false 
true 

  1. 28/08/2025 - revisão 2 - Ajustes: pontuais, sintaxes, target de links e objetivos; Adição: classe anônima e interna
  2. 13/09/2024 - revisão 1 - correção em sintaxe de Atributos, ajustes gramaticais
  3. 01/03/2024 - versão inicial