Bom dia, pessoas!
Estou tendo problemas com este erro: Property 'getSaldo' does not exist on type 'typeof Conta'. Acontece também com os outros métodos da classe "Conta", quando referencio eles de outros módulos.
Os "export" e "import" estão certinhos.
Vou colar abaixo o código typescript da classe "Conta" pra ver se alguém acha algo de errado...
Desde já agradeço qualquer ajuda.
import { TipoTransacao } from "./TipoTransacao.js";
import { Transacao } from "./Transacao.js";
import { GrupoTransacao } from "./grupo-transacao.js";
export class Conta {
nome: string;
saldo: number = JSON.parse(localStorage.getItem("saldo")) || 0;
transacoes: Transacao[] = JSON.parse(localStorage.getItem("transacoes"), (key: string, value: any) => {
if (key === "data") {
return new Date("data");
}
return value;
}) || [];
constructor(nome: string) {
this.nome = nome;
};
debitar(valor: number) {
if (valor <=0) {
throw new Error("Valor debitado deve ser maior que zero.");
}
if (valor > this.saldo) {
throw new Error("Saldo insuficiente!")
}
this.saldo -= valor;
localStorage.setItem("saldo", this.saldo.toString());
};
depositar(valor: number) {
if (valor <= 0) {
throw new Error("Valor depositado deve ser maior que zero.");
}
this.saldo += valor;
localStorage.setItem("saldo", this.saldo.toString());
};
getSaldo() {
return this.saldo;
};
getDataAcesso(): Date {
return new Date();
};
getGruposTransacoes() : GrupoTransacao[] {
const gruposTransacoes: GrupoTransacao[] = [];
const listaTransacoes: Transacao[] = structuredClone(this.transacoes);
const TransacoesOrdenadas: Transacao[] = listaTransacoes.sort( (t1, t2) => t2.data.getTime() - t1.data.getTime() );
let labelAtualGrupoTransacao: string = "";
for (let transacao of TransacoesOrdenadas) {
let labelGrupoTransacao: string = transacao.data.toLocaleDateString("pt-br", { month: "long", year: "numeric" });
if (labelAtualGrupoTransacao !== labelGrupoTransacao) {
labelAtualGrupoTransacao = labelGrupoTransacao;
gruposTransacoes.push({
label: labelGrupoTransacao,
transacoes: []
})
}
gruposTransacoes.at(-1).transacoes.push(transacao);
}
return gruposTransacoes;
};
registrarTransacao(novaTransacao: Transacao): void {
if (novaTransacao.tipoTransacao == TipoTransacao.DEPOSITO) {
this.depositar(novaTransacao.valor);
}
else if (novaTransacao.tipoTransacao == TipoTransacao.TRANSFERENCIA || novaTransacao.tipoTransacao == TipoTransacao.PAGAMENTO_BOLETO) {
this.debitar(novaTransacao.valor);
novaTransacao.valor *= -1;
}
else {
throw new Error("Tipo de Transação é inválido!");
}
this.transacoes.push(novaTransacao);
localStorage.setItem("transacoes", JSON.stringify(this.transacoes));
};
resumirTransacoes(): ResumoTransacoes {
const listaTransacoes: Transacao[] = structuredClone(this.transacoes);
const resumoTransacoes: ResumoTransacoes = {
totalDepositos: 0,
totalTransferencias: 0,
totalPagamentosBoleto: 0
};
for (let transacao of listaTransacoes) {
switch (transacao.tipoTransacao) {
case TipoTransacao.DEPOSITO:
resumoTransacoes.totalDepositos += transacao.valor;
break;
case TipoTransacao.TRANSFERENCIA:
resumoTransacoes.totalTransferencias += transacao.valor;
break;
case TipoTransacao.PAGAMENTO_BOLETO:
resumoTransacoes.totalPagamentosBoleto += transacao.valor;
break;
}
}
return resumoTransacoes;
};
};
const conta = new Conta("José Henrique Santos");
export default Conta;