Métodos de Acesso get e set - TypeScript

No padrão JavaScript ECMAScript 5, foi introduzida a ideia de métodos de acesso: para acessar uma propriedade, define-se um par de métodos, get para obter o valor da propriedade e set para definir o valor. Essa é uma prática bastante comum, aplicada, por exemplo, em Java, onde para gerenciar o acesso a variáveis privadas cria-se um par de métodos get e set, ou em C#, onde para acessar variáveis privadas é criada uma propriedade com dois métodos, get e set.

Por exemplo, temos a seguinte classe:

class Person {
    name: string;
    age: number;
}

let tom = new Person();
tom.name = "Tom";
tom.age = -1243;
console.log(tom.age); 

Aqui, ao campo age, que representa a idade de uma pessoa, é atribuído um valor incorreto.

O uso de acessores ou métodos de acesso permite controlar como o valor é definido e como é retornado. Em particular, podemos reescrever a classe anterior usando acessores da seguinte forma:

class Person {
    name: string;
    private _age: number;
  
    public get age(): number {
        return this._age;
    }
  
    public set age(n: number) {
        if (n < 0 || n > 110) {
            console.log("Invalid age!");
        } else {
            this._age = n;
        }
    }
}

let tom = new Person();
tom.name = "Tom";
tom.age = 36;           
console.log(tom.age);   // 36
tom.age = -1243;        // Invalid age!   
console.log(tom.age);   // 36  

Os métodos de acesso são definidos como métodos comuns, com a diferença de que as palavras-chave get e set são colocadas antes deles. O método set controla como o valor é atribuído, enquanto o método get retorna o valor.

Nesse caso, tornamos a variável _age privada, restringindo o acesso direto a ela. Agora, só é possível acessá-la por meio dos métodos de acesso. O método get simplesmente retorna o valor da variável:

public get age(): number {
    return this._age;
} 

E o método set define o valor de _age, mas apenas se estiver dentro do intervalo correto.

Quando atribuímos um valor tom.age = 36; o método set é acionado.

Quando obtemos o valor console.log(tom.age); o método get é acionado.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com