Carregando
Todos os artigos
Programação 3 min de leitura

Uma Breve Introdução a Classes no TypeScript

nbkhope

A programação orientada à objetos no JavaScript é originalmente realizada através de funções e herança prototípica. Com o advento do ECMAScript 2015, coloquialmente chamado de “ES6”, foi adicionada a palavra chave class, agora nos permitindo criar classes de maneira similar à linguagens como C++, C#, e Java.

O TypeScript também tem suporte a declaração de classes através da palavra chave class. Vamos ver um exemplo:

1class Forma {
2  nome: string;
3
4  constructor(oNome: string) {
5    this.nome = oNome;
6  }
7}

O exemplo acima define uma classe chamada de Forma, que tem como atributo a propriedade nome. A função constructor() é chamada quando você construir um objeto baseado na classe e atribui um nome à forma.

O acesso de membros da classe é por padrão public, se nada for definido explicitamente. Entao podemos instanciar um objeto e acessar a propriedade nome diretamente:

let retang: Forma = new Forma("Retangulo");
console.log(`O nome da forma é ${retang.nome}`);

A expressão acima primeiro declara uma variável do tipo Forma e atribui ao seu valor uma nova instância de Forma, com o nome Retangulo. Note que a string Retangulo é passada como argumento para o constructor, que por si atribui o nome do objeto this.nome.

O console.log imprime uma mensagem que inclui acesso ao nome da Forma diretamente, sem passar por um método getter.

Vamos adicionar duas propriedades à classe Forma: largura e altura. Ambas devem ser do tipo number.

1class Forma {
2  nome: string;
3  largura: number;
4  altura: number;
5
6  constructor(oNome: string, aLargura: number, aAltura: number) {
7    this.nome = oNome;
8    this.largura = aLargura;
9    this.altura = aAltura;
10  }
11}

Agora podemos fazer um método para calcular a área da forma:

1class Forma {
2  // ...
3  public obterArea(): number {
4    return this.largura * this.altura;
5  }
6}

Como já mencionado, o acesso dos membros de uma classe em TypeScript é public por padrão, mas o exemplo acima o define explicitamente. Acesso público significa que o membro pode ser referenciado por fora da classe. Isso é o oposto do acesso privado (private), em que é proibido a referência do membro de fora da classe ou instância.

O método não tem nenhum parâmetro porque os valores necessários para calcular a área já são parte dos atributos do objeto.

O tipo do valor de retorno do método obterArea é explicitamente definido como number, mas poderia ser omitido e o compilador deduziria o tipo ao analizar a expressão de retorno.

Vamos testar o método obterArea:

let retang: Forma = new Forma("Retangulo", 3, 4);
console.log(`A area do retângulo é ${retang.obterArea()}`);

Saída:

A area do retângulo é 12

Para não expor os atributos largura e altura do objeto ao mundo de fora, que tal redefinir essas propriedades com acesso privado?

1class Forma {
2  // ...
3  private largura: number;
4  private altura: number;
5  // ...
6}

Dessa maneira, se o usuário do objeto tentar referenciar retang.largura, o compilador irá emitir um erro dizendo que o acesso não é permitido devido a propriedade ser privada:

Property 'largura' is private and only accessible within class 'Forma'.

Para aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech:

https://www.youtube.com/watch?v=czp3QV55v1k&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb

Nos vemos lá!

Obrigado pela leitura!

Conhece alguém que vai gostar? Mande para essa pessoa.

Mais artigos

Leia a seguir

Comentários

Seja gentil e específico. Comentários com links de contas novas aparecem depois da análise de um moderador.