0% Concluído
0/0 Steps
  1. Introdução ao TypeScript
    5 Tópicos
    |
    1 Teste
  2. Configuração e Instalação
    4 Tópicos
    |
    1 Teste
  3. Fundamentos do TypeScript
    6 Tópicos
    |
    1 Teste
  4. Tipos Avançados
    10 Tópicos
    |
    1 Teste
  5. Funções em TypeScript
    5 Tópicos
    |
    1 Teste
  6. Tipos de Objetos e Aliases
    5 Tópicos
    |
    1 Teste
  7. Interfaces
    5 Tópicos
    |
    1 Teste
  8. Classes em TypeScript
    7 Tópicos
    |
    1 Teste
  9. Genéricos
    4 Tópicos
    |
    1 Teste
  10. Módulos
    5 Tópicos
    |
    1 Teste
  11. Compilador TypeScript
    2 Tópicos
    |
    1 Teste
  12. Encerramento
Módulo 8, Tópico 4
Em andamento

Getters e Setters

Módulo Progresso
0% Concluído

Na aula de hoje, vamos explorar os getters e setters em TypeScript, métodos especiais que permitem controlar o acesso e a modificação dos campos de classe de forma mais flexível. Vamos aprender como definir e utilizar esses recursos para adicionar uma camada de controle sobre os campos das nossas classes. Com os getters, poderemos ler campos com precisão, enquanto os setters nos permitirão adicionar lógica personalizada durante a modificação dos valores. Então, bora começar!

Getters

Os getters são métodos que permitem a leitura de um campo de classe específico. Eles são definidos usando a palavra-chave get, seguida de um identificador que serve como o nome do getter.

class Produto {
  private _preco: number;

  constructor(preco: number) {
    this._preco = preco;
  }

  get preco(): number {
    return this._preco;
  }
}

const produto = new Produto(50);
console.log(produto.preco); // Saída: 50

Neste exemplo, definimos um getter chamado preco que nos permite acessar o valor do campo _preco de forma controlada.

Setters

Os setters são métodos que permitem a modificação de um campo de classe específico. Eles são definidos usando a palavra-chave set, seguida de um identificador que serve como o nome do setter.

class Produto {
  private _preco: number;

  constructor(preco: number) {
    this._preco = preco;
  }

  get preco(): number {
    return this._preco;
  }

  set preco(novoPreco: number) {
    if (novoPreco >= 0) {
      this._preco = novoPreco;
    }
  }
}

const produto = new Produto(50);
console.log(produto.preco); // Saída: 50

produto.preco = 60; // Modificando o preço usando o setter
console.log(produto.preco); // Saída: 60

produto.preco = -10; // Tentativa de definir um preço negativo (não será permitido)
console.log(produto.preco); // Ainda será 60, pois a modificação foi rejeitada pelo setter

Neste exemplo, definimos um setter chamado preco que permite a modificação do campo _preco, mas apenas se o novo valor for não negativo.

Vantagens de Getters e Setters

Os getters e setters oferecem os seguintes benefícios:

  • Controle sobre o acesso e modificação de campos de classe.
  • A capacidade de adicionar lógica personalizada durante a leitura ou modificação de valores.
  • Facilitam a evolução da classe, pois você pode alterar a implementação interna de um campo sem afetar o código que o utiliza.

Exercícios

Exercício 1: Implementando um Getter

Crie uma classe chamada Pessoa com os seguintes campos privados:

  • _nome: string
  • _idade: number

Implemente um getter chamado nome que permite a leitura do campo _nome. Em seguida, crie uma instância da classe Pessoa com um nome qualquer e exiba o nome no console usando o getter.

Exercício 2: Implementando um Setter

Aprimore a classe Pessoa do exercício anterior adicionando um setter chamado idade que permite a modificação do campo _idade. No entanto, o setter só deve permitir a definição de idades maiores ou iguais a zero. Crie uma instância da classe Pessoa, defina uma idade negativa usando o setter e verifique se a idade foi ajustada corretamente. Registre os resultados no console.

Exercício 3: Adicionando Lógica Personalizada

Crie uma classe chamada ContaBancaria com os seguintes campos privados:

  • _saldo: number
  • _limiteCredito: number

Implemente um getter chamado saldo que permita a leitura do campo _saldo. Em seguida, crie um setter chamado limiteCredito que permita a definição do campo _limiteCredito. No entanto, o setter deve garantir que o limite de crédito não seja menor que zero. Após implementar esses métodos, crie uma instância da classe ContaBancaria, defina o saldo e o limite de crédito usando os métodos correspondentes e registre os valores no console.