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!!