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

conta.depositar is not a function

Boa noite, estou com o seguinte problema. Poderiam me ajudar?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade



export class cliente {
    nome;
    cpf;
    rg;
}

export class ContaCorrente {
    agencia;
    cliente;
    _saldo = 0;
    saque(valor){
        if(this._saldo >= valor){
            this._saldo -= valor;
            console.log(`Você realizou um saque no valor de ${valor}`);
            return;

        }


    }

    depositar(valor){  
        if(valor <= 0)
        { 
            return;        
        }  
        this._saldo += valor


    }

    transferir(valor, conta){
        const valorSacado = this.saque(200);
        conta.depositar(valorSacado);
    }



}


import { cliente } from "./Cliente.js";
import { ContaCorrente } from "./ContaCorrente.js";




const cliente1 = new cliente();
const ContaCorrentecliente1 = new ContaCorrente();

cliente1.nome = "Matheus Ferreira";
cliente1.cpf = 11111122233;
cliente1.rg = 123654789;
ContaCorrentecliente1.agencia = 2180;
ContaCorrentecliente1.cliente = cliente1;


const cliente2 = new cliente();
const ContaCorrentecliente2 = new ContaCorrente();

cliente2.nome = "Raquel Ferreira";
cliente2.cpf = 22222233366;
cliente2.rg = 789456123;
ContaCorrentecliente2.agencia = 2180;
ContaCorrentecliente2.cliente = cliente2;
ContaCorrentecliente1.depositar(3000);
console.log(ContaCorrentecliente1);
console.log(ContaCorrentecliente2);

ContaCorrentecliente1.transferir(600, cliente2);
console.log(ContaCorrentecliente1);
console.log(ContaCorrentecliente2);
2 respostas
solução!

Boa noite, Matheus!

Estava dando uma olhada no seu código, e encontrei a razão do erro. Ele está ocorrendo porque você está usando a função depositar em um objeto da classe Cliente (cliente2) e não da classe ContaCorrente (que seria ContaCorrentecliente2). Como o método .depositar é da classe ContaCorrente, é retornado um erro de que .depositar não é uma função.

Para resolver, sugiro a alteração da linha 31 do arquivo index.js para o seguinte:

ContaCorrentecliente1.transferir(600, ContaCorrentecliente2);

Essa mudança ainda ocasionará outro erro, pois no arquivo ContaCorrente.js a constante valorSacado tem como atribuição um método da própria classe, que está definido com o valor fixo de 200. Quando você tentar depositar a constante valorSacado pelo método depositar, a resposta será um NaN (Not a Number), pois você estará pedindo para somar um método com um número. Para corrigir isso, sugiro a seguinte alteração no método transferir:


  transferir(valorTransf, conta){
        this.saque(valorTransf);
        conta.depositar(valorTransf);
    }

Espero ter ajudado.

Um abraço!

`

Boa tarde, Gabriel Peixoto

Tudo bem com você? Espero que sim ! Muito obrigado, resolveu meu problema e consegui dar sequência aos estudos.