Ao chamar a contagem das contas é apresentado como undefined:
index.js:
/*
Autor: Walace Vilas-Boas de Jesus
*/
import {Cliente} from "./Cliente.js";
import {ContaCorrente} from "./ContaCorrente.js";
const cliente1 = new Cliente("Walace", "11122233390");
const contaWalace = new ContaCorrente("1001", cliente1);
const cliente2 = new Cliente("Maria", "11122233350");
const contaMaria = new ContaCorrente("1002", cliente2);
contaWalace.depositar(500);
contaWalace.transferir(200, contaMaria);
console.log("\n");
console.log("Agencia: ", contaWalace.agencia);
console.log("Nome: ", contaWalace.cliente.nome);
console.log("CPF: ", contaWalace.cliente.cpf);
console.log("Saldo: ", contaWalace.saldo);
console.log("\n");
console.log("Agencia: ", contaMaria.agencia);
console.log("Nome: ", contaMaria.cliente.nome);
console.log("CPF: ", contaMaria.cliente.cpf);
console.log("Saldo: ", contaMaria.saldo);
console.log("\n");
console.log("Contas abertas: ", ContaCorrente.numeDeContas);
ContaCorrente.js:
/*
Autor: Walace Vilas-Boas de Jesus
*/
import { Cliente } from "./Cliente.js";
export class ContaCorrente{
// # torna o atributo privado
#saldo = 0;
agencia;
#cliente;
static numerodeContas = 0;
set cliente(novoValor){
//Impede recer um valor que não seja do tipo Cliente
if(novoValor instanceof Cliente){
this.#cliente = novoValor;
}
}
get cliente(){
return this.#cliente;
}
get saldo(){
return this.#saldo;
}
constructor (agencia, cliente){
this.agencia = agencia;
this.cliente = cliente;
ContaCorrente.numerodeContas += 1;
}
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);
}
}