NBK Mundo Tech avatar

Uma Breve Introdução a Classes no TypeScript

nbkmundotech

Published: 04 Jun 2019 › Updated: 04 Jun 2019Uma Breve Introdução a Classes no TypeScript

Uma Breve Introdução a Classes no TypeScript

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:

class Forma {
  nome: string;

  constructor(oNome: string) {
    this.nome = oNome;
  }
}

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.

class Forma {
  nome: string;
  largura: number;
  altura: number;

  constructor(oNome: string, aLargura: number, aAltura: number) {
    this.nome = oNome;
    this.largura = aLargura;
    this.altura = aAltura;
  }
}

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

class Forma {
  // ...
  public obterArea(): number {
    return this.largura * this.altura;
  }
}

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?

class Forma {
  // ...
  private largura: number;
  private altura: number;
  // ...
}

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:

Nos vemos lá!

Leave Uma Breve Introdução a Classes no TypeScript to:

Written by

Aulas de desenvolvimento de software online

Read more #typescript posts


Best Posts From NBK Mundo Tech

We have not curated any of nbkmundotech's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From NBK Mundo Tech