Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

O

Eu não consegui fazer com que o "set cliente(novoValor)" funcionasse corretamente, a menos que eu declarasse também o "get cliente()".

Além disso, se eu não declarar o "get cliente()" o Visual Code Studio deixa o seguinte alerta na linha do "set cliente(novoValor)": "Infer type of 'cliente' from usage"

Realmente existe essa dependência ou estou fazendo algo errado? Pela aula do professor não deveria existir.

Não funciona:

export class ContaCorrente {
    agencia;
    _cliente;

    _saldo = 0;

    set cliente(novoValor){
        if(novoValor instanceof Cliente){
            this._cliente = novoValor;
        }
    }

    // get cliente(){
    //     return this._cliente;
    // }

Funciona:

export class ContaCorrente {
    agencia;
    _cliente;

    _saldo = 0;

    set cliente(novoValor){
        if(novoValor instanceof Cliente){
            this._cliente = novoValor;
        }
    }

     get cliente(){
         return this._cliente;
     }
2 respostas

Na verdade eu fiz uma leitura errada do erro que foi apresentado no console.

No meu index.js eu estou solicitando o _cliente da conta1 para poder atribuir o nome "Ricardo".

const conta1 = new ContaCorrente();
conta1.cliente = new Cliente();
conta1.cliente.nome = "Ricardo";

E o console me contou o seguinte:

conta1.cliente.nome = "Ricardo";

TypeError: Cannot set property 'nome' of undefined

Sendo assim, o "set cliente(novoValor)" (diferente do que eu havia concluído) está funcionando de acordo, então o que gerou o erro no console é o seguinte: se eu não definir "get cliente()" eu não vou conseguir acessar o _cliente da conta1, portanto só vou ter êxito se o "get cliente()" estiver definido, correto?

solução!

Olá Bruno, tudo bem?

Exato, seu raciocínio está correto.

O set client() e o get client() não são dependentes um do outro. Entretanto, ao declarar conta1.cliente = new Cliente() faz referência ao método set e ao declarar conta1.cliente.nome = "Ricardo" a referência é ao get em cliente e ao set em cliente.nome.

Dessa forma, ambos precisam ser definidos para que o programa funcione.

Fico feliz que conseguiu solucionar, em caso de dúvidas futuras estamos a disposição para te ajudar.

Abraços e bons estudos!