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.
Curso Node.js - Fundamentos
Conhecer o cursoModificadores 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.
Curso TypeScript - Fundamentos
Conhecer o cursoNo 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.
Curso TypeScript - Avançado
Conhecer o cursoPor fim, caso queira aprender mais sobre TypeScript saiba que aqui na TreinaWeb temos o curso TypeScript - Avançado que possui 01h21 de vídeos e um total de 14 exercícios. Conheça também nossos outros cursos de TypeScript.
Veja quais são os tópicos abordados durante o curso de TypeScript - Avançado:
- Decorators;
- Generics;
- Type Alias e Unions;
- Type Guards
- Debug;
- Dicas e boas práticas.