Javascript

Modificadores de acesso no TypeScript

Nester artigo vamos aprender a utilizar os modificadores de acesso das propriedades de uma classe no TypeScript.

cerca de 1 mês atrás

No artigo trabalhando com classes em TypeScript, aprendemos a criar uma classe com suas propriedades e instanciar um objeto, agora vamos ver como controlar o comportamento de acesso dessas propriedades, para isso utilizaremos os modificadores de acesso.

Modificadores de acesso no TypeScript

Seguindo o exemplo do artigo classes no TypeScript temos a classe Pessoa com 3 propriedades, nome, idade e estaVivo:

class Pessoa{
	nome: string;
	idade: number;
	estaVivo; boolean;
}

Perceba que não há nenhuma palavra antes das propriedades, isso significa que elas irão receber o modificador “public” por padrão, ou seja, elas são públicas e podem ser acessadas e alteradas tanto dentro da classe ou fora dela, não tendo um escopo de “segurança”.

Para ter esse controle, há os modificadores de acesso, são eles:

Public

Pode ser acessado tanto pela mesma classe, classes filhas e outras classes.

class Pessoa{
	nome: string = "TreinaWeb";
	idade: number = 12
	estaVivo: boolean = true;
}

let pessoa = new Pessoa();
pessoa.nome = "Paulo"; //com o modificador public podemos acessar e alterar o valor da
											//propriedade nome fora da classe

Private

Pode ser acessada somente pela própria classe.

class Pessoa{
	private nome: string = "TreinaWeb";
	idade: number = 12
	estaVivo: boolean = true;
}

let pessoa = new Pessoa();
pessoa.nome = "Paulo"; //Utilizando private não podemos mais acessar desta forma

Protected

Pode ser acessado pela mesma classe e classes filhas, não pode ser acessado por outras classes.

class Pessoa{
	nome: string;
	idade: number;
	protected estaVivo: boolean;

	constructor(nome: string, idade: number, estaVivo: boolean){
    	this.nome = nome;
    	this.idade = idade;
    	this.estaVivo = estaVivo;
	}
}

class PessoaFisica extends Pessoa{
  cnpj: number;

  constructor(nome: string, idade: number, estaVivo: boolean, cnpj: number){
	super(nome, idade, estaVivo); //ao utilizar protected, podemos acessar por classes
	this.cnpj = cnpj;             //filhas e pela própria classe;
  }
}
 

Readonly

Pode ser acessado fora da classe, mas não é possível alterar o seu valor.

class Pessoa{
	nome: string = "TreinaWeb";
	idade: number = 12
	readonly estaVivo: boolean = true;
}

let pessoa = new Pessoa();
console.log(pessoa.estaVivo); //a propriedade estaVivo será exibida com sucesso.
pessoa.estaVivo = false; //Mas não podemos alterar essa propriedade.

Ao usar os modificadores nós adicionamos camadas de segurança de acesso para a nossa aplicação. Desta forma, para auxiliar na manipulação destes dados, contamos com os métodos assessores Get e Set. com eles nós podemos acessar e alterar propriedades private/protected.

Métodos Get e Set

Agora podemos criar os métodos Get e Set da seguinte maneira:

class Pessoa{
	private nome: string = "TreinaWeb";
	private idade: number = 12
	readonly estaVivo: boolean = true;

  setNome(nome: string){
    this.nome = nome;
  }

  getNome(): string{
    return this.nome;
  }
}

let pessoa = new Pessoa();
pessoa.setNome('TW');
console.log(pessoa.getNome());

Perceba que utilizamos o pessoa.setNome(‘TW’) para alterar a propriedade nome, logo em seguida, utilizamos o método pessoa.getNome(); para acessar a propriedade.

No TypeScript nós temos outra maneira de usar o Get e Set, que é utilizando a palavra-chave respectiva de cada método, da seguinte forma:

class Pessoa{
	private _nome: string = "TreinaWeb";
	private idade: number = 12
	readonly estaVivo: boolean = true;

  set nome(nome: string){
    this._nome = nome;
  }

  get nome(): string{
    return this._nome;
  }
}

let pessoa = new Pessoa();
pessoa.nome = 'TW'
console.log(pessoa.nome);

Neste caso podemos utilizar as palavras chave “get” e “set” diretamente, e por padrão, o nome do método é o mesmo da propriedade, que ganha o prefixo ‘_’ como podemos ver em _nome.

Assim, quando vamos utilizar os métodos Get e Set desta forma, passamos o objeto e a propriedade de forma similar como se estivéssemos acessando diretamente a propriedade.

Conclusão

Neste artigo entendemos o comportamento dos modificadores de acesso e dos métodos assessores e como podemos utilizar esses conceitos do paradigma de orientação a objetos com o TypeScript, tornando o código mais confiável para o desenvolvimento de nossas aplicações.

Autor(a) do artigo

Wesley Gado
Wesley Gado

Formado em Análise e Desenvolvimento de Sistemas pelo Instituto Federal de São Paulo, atuou em projetos como desenvolvedor Front-End. Nas horas vagas grava Podcast e arrisca uns três acordes no violão.

Todos os artigos

Artigos relacionados Ver todos