1
resposta

Juntando STATIC =, SET e GET

Olá! Estava tentando fazer alguns testes após a aula. Uma coisa que notei, é que, o "numeroDeContas" não é privado. então, eu consigo atribuir a ele um valor em qualquer instante. Por exemplo:

ContaCorrente.numeroDeContas=8;
console.log(ContaCorrente.numeroDeContas);

e o resultado desse console.log é 8. Mesmo que eu tenha cadastrado apenas 3 contas.

Imagino que a solução disso seria colocar "numeroDeContas" como privado "_numeroDeContas" e colocar um Getter para puxar a quantidade. Por exemplo:

get numeroDeContas(){
        return Cliente._numeroDeContas;
    }

Porém, quando eu coloco esse getter, o valor continua 8. Pelo que eu entendi ele está atribuindo um novo valor a um novo atributo chamado "numeroDeContas". Se eu coloco o seguinte comando:

ContaCorrente.numeroDeContas=8;
console.log(ContaCorrente.numeroDeContas);
console.log(ContaCorrente._numeroDeContas);

A resposta que obtenho é: 8 (aquele valor que ele criou, que deveria ser o que pedi para ser o get), e 3 (que é o número real de contas).

Pelo que eu entendi posso estar viajando total, é que esse getter está atribuído a uma conta. Do mesmo modo que, antes de definir o numeroDeContas como static, isso também estava.

Quando eu fiz o mesmo processo criando um número de clientes, deixei o numeroDeClientes como static e privado. Criei um getter, e ele me devolve "undefined" (o que me faz realmente pensar que o get está procurando um "numeroDeClientes" específico para uma conta, que não existe):

export class Cliente{
    static _numeroDeClientes=0

    nome;
    _cpf;  

    get cpf(){
        return this._cpf;
    }

    get numeroDeClientes(){
        return Cliente._numeroDeClientes
    }

    constructor(nome, cpf){
        this.nome = nome;
        this._cpf = cpf;
        Cliente._numeroDeClientes++;
    }
}

Dúvidas: 1) É algo assim mesmo que está acontecendo ? É possível colocar esse getter relacionado a um elemento estático?

Desde já! Obrigado!!

1 resposta

Fala ai João, tudo bem? Vamos lá:

1) É algo assim mesmo que está acontecendo ?

Isso, é realmente isso ai.

É possível colocar esse getter relacionado a um elemento estático?

Depende, um getter não, mas, você pode criar uma função estática que vai ler o atributo estático ou uma função normal que ao invés de usar this usa o nome da classe para ler o atributo estático.

Espero ter ajudado.