1
resposta

Ainda recebe tipo primitivo mesmo após o instanceof

Mesmo pedindo que o valor a ser recebido tenho que ser do tipo Cliente ele ainda recebe valores primitivos, segue o código do index.js e da classe ContaCorrente.js:

/*
    Autor: Walace Vilas-Boas de Jesus
*/
import {Cliente} from "./Cliente.js";
import {ContaCorrente} from "./ContaCorrente.js";

const cliente1 = new Cliente();
const contaWalace = new ContaCorrente();

const cliente2 = new Cliente();
const contaMaria = new ContaCorrente();

cliente1.nome = "Walace";
cliente1.cpf = 11122233390;
contaWalace.agencia = 1001;
contaWalace._cliente = cliente1;
//contaWalace.cliente.nome = "Walace";
//contaWalace.cliente.cpf = 11122233390;

contaWalace.depositar(500);

contaWalace.transferir(200, contaMaria);

cliente2.nome = "Maria";
cliente2.cpf = 11122233350;
contaMaria.agencia = 1001;
contaMaria._cliente = 0;
//contaMaria.cliente.nome = "Maria";
//contaMaria.cliente.cpf = 11122233350;

//console.log(contaWalace);
console.log(contaMaria);
/*
    Autor: Walace Vilas-Boas de Jesus
*/
import { Cliente } from "./Cliente.js";

export class ContaCorrente{
    // # torna o atributo privado
    _saldo = 0;
    agencia;
    _cliente;

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

    get cliente(){
        return this._cliente;
    }

    get saldo(){
        return this._saldo;
    }

    sacar(valor) {
        if(valor > this._saldo) return;

        this._saldo -= valor;
        return valor;
    };

    depositar(valor) {
        //Tecnica de early return, se a condição for diferente do que eu quero já sai do metod, serve pra deixar o código numa ninha de identação melhor:
        if(valor <= 0) return;

        this._saldo += valor;
    };

    transferir(valor, contaDestino){
        const valorSacado = this.sacar(valor);
        contaDestino.depositar(valorSacado);
    }
}
1 resposta

Fala ai Walace, tudo bem? No caso é porque tu está usando _cliente:

contaMaria._cliente = 0;

Dessa forma não vai cair no seu setter, mude para .cliente:

contaMaria.cliente = 0;

Espero ter ajudado.