Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Console.log da conta corrente esta me retornando "_cliente: Cliente"

Boa noite! estou na aula sobre os Constructors! neste caso criei 3 clientes e 3 contas. a interação do constructor e seu acessor get esta funcionando perfeitamente na parte do cliente. porem quando cheguei na etapa onde o professor bugan implementa o constructor no modulo de ContaCorrente, segui os passos da aula, porem de alguma forma quando eu dou um console.log de alguma destas 3 contas criadas ele me retorar o seguinte: ContaCorrente {agencia: 1001,** _cliente: Cliente**, _saldo: 0} onde na parte do cliente: eu esperava que ele fosse me retornar os dados da minha cliente como estava funcionando sem o construtor! irei deixar abaixo o meu codigo nos 3 modulos. caso alguem identificar onde eu estou errando se possivel me explicar o meu erro. Desde já agradeço a atenção e a ajuda pessoal!

INDEX.JS -------------------------------------------------

import{Cliente} from "./Cliente.js";
import{ContaCorrente} from "./ContaCorrente.js";

const cliente1 = new Cliente("Ricardo", 11122233309);

const cliente2 = new Cliente("Alice", 11133322210);

const cliente3 = new Cliente("João", 88888888888888)
console.log(cliente2.nome)

const conta1 = new ContaCorrente(1001, cliente1);

const conta2 = new ContaCorrente(1001, cliente2);
console.log(conta2);
const conta3 = new ContaCorrente(102, cliente3);

conta1.depositar(1000);
conta1.transferir(400, conta2);
conta2.transferir(100, conta3 )


//console.log(conta2);
//console.log(conta3);

ContaCorrente.JS -----------------------------------------

import { Cliente } from "./Cliente.js";
export class ContaCorrente{
    agencia;
    _cliente;
    //#saldo = 0 github.com/tc39/proposal-class-fields#private-fields
    _saldo = 0;

    set cliente(novoValor){  //set = atribuir um valor a minha propriedade
        if(novoValor instanceof Cliente){ // se o novoValor for uma INSTANCIA DE Cliente = true
            this._cliente = novoValor;   //Usando assessores do tipo set podemos alterar a regra de como um atributo pode ou não ser modificado sem precisar alterar isso em diversos pontos do código
            //Usar assessores do tipo set é uma boa prática para garantirmos que a atribuição de propriedades está sempre segura
        }

    }

    get cliente(){ // get é um acessor aqui estamos permitindo que possamos pegar somente o cliente
        return this._cliente; // o get sempre ira te retornar um valor e não alterá-lo
    }

    get saldo(){  // ACESSORES SAO SEMPRE PUBLICOS!!!! Por conta disso nao coloquei o _ no saldo 
        return this._saldo  // Com este acessor fizemos um bloco somente de leitura fazendo com que o _saldo nao possa ser alterado fora da classe por estar somente como leitura
    }

    constructor(agencia, cliente){
        this.agencia = agencia;
        this._cliente = cliente;
    }


    sacar(valor){
        if(this._saldo >= valor){
            this._saldo -= valor;
            return valor;
        }else{
            console.log("Voce nao pode sacar");
        }
    }

    depositar(valor){
        if(valor <= 0){
            return; // Early Return para que caso o valor depositado nao estiver dentro das condiçoes, pare a execuçao do codigo
        }
        this._saldo +=valor;
    }

    transferir(valor, conta){
        const valorSacado = this.sacar(valor);
        conta.depositar(valorSacado);

    }
} //Null = Um espaço na memoria onde eu peço para ficar vazia manualmente.
// Undefined = Valor indefinido no codigo.

Cliente.js ------------------------------------------------------

export class Cliente{
    nome;
    _cpf;

    get cpf(){
        return this._cpf; // return é bem importante para que esta leitura tenha o valor retornado para o cliente
    }

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

}
1 resposta
solução!

Fala Gabriel, tudo bem?

Eu testei aqui e funcionou perfeitamente, veja clicando aqui, acredito que esse Cliente que esteja sendo mostrado, é que as informações estejam resumidas, por onde você está testando o seu código?

Aguardo o seu retorno :D