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

SyntaxError

class Cliente{
    nome;
    cpf;   
}

class ContaCorrente{
    agencia;
    #saldo;

    sacar(valor){
        if(this.#saldo >= valor){
            this.#saldo -= valor;
        }else{
            console.log("\nVocê não possui saldo para esta operação.");
        }
    }
    depositar(valor){
        if(valor > 0){
            this.#saldo += valor;
        }else{
            console.log("Impossivel depositar valores negativos")
        }
    }
}


const cliente1 = new Cliente();
const cliente2 = new Cliente();

cliente1.nome = "Ricardo";
cliente1.cpf = 11122233309;

cliente2.nome = "Alice";
cliente2.cpf = 88822233309;

const contaCorrenteRicardo = new ContaCorrente();
contaCorrenteRicardo.agencia = 1001
contaCorrenteRicardo.#saldo = 0

contaCorrenteRicardo.depositar(300);

contaCorrenteRicardo.sacar(150);
console.log("\nSeu saldo atual é de R$" + contaCorrenteRicardo.#saldo + "\n")






quando eu executo o código, meu powershell acusa que "Private field '#saldo' must be declared in an enclosing class". Mas não é exatamente isso que eu fiz na terceira linha aqui? :

class ContaCorrente{
    agencia;
    #saldo;

    sacar(valor){
        if(this.#saldo >= valor){
            this.#saldo -= valor;
        }else{
            console.log("\nVocê não possui saldo para esta operação.");
        }
    }
    depositar(valor){
        if(valor > 0){
            this.#saldo += valor;
        }else{
            console.log("Impossivel depositar valores negativos")
        }
    }
}
2 respostas
solução!

Oi Thiago, tudo bem?

Acontece que o NodeJS implementou uma funcionalidade para lidar com esses atributos privados (embora não tenham sido implementados pela funcionalidade oficialmente, você ainda pode testá-lo em alguns ambientes, e o NodeJS é um deles).

Portanto, você não pode acessar essa variável #saldo fora da classe.

Logo, você precisa inicializá-la com 0 dentro da classe:

class ContaCorrente{
  agencia;
  #saldo = 0;
 }

E o último console.log() causará um erro pois, novamente, essa variável não pode ser acessada fora da classe. Portanto você irá precisar adicionar um método get dentro da classe "ContaCorrente" que retorne essa variável:

get saldo() {
    return this.#saldo;
}

E então, no último console.log():

console.log("\nSeu saldo atual é de R$" + contaCorrenteRicardo.saldo + "\n")

Aqui na Alura temos um artigo sobre "This, Getters e Setters", você pode acessar aqui.

Espero ter ajudado, bons estudos =)

endtendi, valeu!