1
resposta

Erro no contador

Boa tarde, Segui o procedimento para contagem de conta corrente mas retorna seguinte erro:

file:///home/tiago/Documentos/Personal_Projects/Alura/javascript_OO/ContaCorrente.js:7
        ContaCorrente.numeroDeContaCorrente += 1;
                                            ^

TypeError: Cannot create property 'numeroDeContaCorrente' on string '12345-6'
    at new ContaCorrente (file:///home/tiago/Documentos/Personal_Projects/Alura/javascript_OO/ContaCorrente.js:7:45)
    at file:///home/tiago/Documentos/Personal_Projects/Alura/javascript_OO/index.js:7:11
    at ModuleJob.run (internal/modules/esm/module_job.js:169:25)
    at async Loader.import (internal/modules/esm/loader.js:177:24)
    at async Object.loadESM (internal/process/esm_loader.js:68:5)

Meu codigo :

ContaCorrente.js

export class ContaCorrente {
    static numeroDeContaCorrente = 0;
    constructor(cliente = null, agencia, ContaCorrente) {
        this.cliente = cliente;
        this.agencia = agencia;
        this.ContaCorrente = ContaCorrente;
        ContaCorrente.numeroDeContaCorrente += 1;
    }
    saldo = 0;

    sacar(valor) {
        if (valor > this.saldo) {
            console.log("Saldo insuficiente");
            return;
        }

        this.saldo -= valor;
    }

    depositar(valor) {
        if (valor <= 0) {
            console.log(`${valor} não é valido para Deposito`);
            return;
        }

        this.saldo += valor;
    }

    transferir(valor, conta) {
        try {
            if (valor <= 0) {
                console.log(`${valor} não é valido para Transferência`);
                return;
            }

            if (!conta) {
                console.log(`Conta de destino ${conta} não encontrada`);
                return;
            }

            this.sacar(valor);
            conta.depositar(valor);
        }
        catch (e) {
            console.log(e);
        }
    }
}

index.js

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


const c = new ContaCorrente(new Cliente("João", "123.456.789-10"), "123", "12345-6");
c.depositar(1000);
c.sacar(500);
console.log(c);

const c2 = new ContaCorrente(new Cliente("Maria", "987.654.321-10"), "456", "45678-9");
c2.depositar(1000);
c2.transferir(500, c);

console.log(c2);
console.log(c);

console.log(ContaCorrente.numeroDeContaCorrente);
1 resposta

Boa tarde Thiago, tudo bem?

Tente remover o "this.ContaCorrente = ContaCorrente;" , pois ele não é necessário no código e a " ContaCorrente " não precisa estar no construtor como um parâmetro, pois ele somente acumula a quantidade de contas. Assim que remover ele do construtor, no index.js = " const c = new ContaCorrente(new Cliente("João", "123.456.789-10"), "123", "12345-6"); " Remova o "12345-6", onde o mesmo está sendo reconhecido como a ContaCorrente em si, afirmando que ele é uma string.

Vai ficar assim: index.js const c = new ContaCorrente(new Cliente("João", "123.456.789-10"), "123"); const c2 = new ContaCorrente(new Cliente("Maria", "987.654.321-10"), "456");

ContaCorrente.js constructor(cliente = null, agencia) { this.cliente = cliente; this.agencia = agencia; ContaCorrente.numeroDeContaCorrente += 1; }