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);
}
}