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

[Dúvida] Set

Boa tarde. Estou com uma dúvida sobre a lógica set no cliente. Acompanhei o professor, porém, quando testei atribuir 3 ao contaCorrente1.cliente, atribuiu normalmente, como se ignorasse o set. Será que fiz alguma coisa errada?

Obs.: Retirei as outras informações que não faziam parte da dúvida para ficar mais legível o código. Retirei também o # para conseguir visualizar no terminal.

Arquivo "ContaCorrente.js"

import Cliente from "./Cliente.js";

export default class ContaCorrente {
    cliente;

    constructor(cliente) {
        this.cliente = cliente;
    }

   set cliente(novoValor) {
        if(novoValor instanceof Cliente) {
            this.cliente = novoValor;
        }
    }

    get cliente() {
        return this.cliente;
    }
}

Arquivo "index.js"

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

const cliente1 = new Cliente("Ana", 12345678910);
const cliente2 = new Cliente("Bia", 98765432101);

const contaCorrente1 = new ContaCorrente(3, 5842);
const contaCorrente2 = new ContaCorrente(cliente2, 5842);

Desde já, agradeço.

2 respostas
solução!

Oi Carolina, boa noite! Também estava tendo esse mesmo problema. Tirei a # para poder visualizar no terminal e passou a dar esse erro. Acho que pode ser porque tanto a propriedade cliente e o setter cliente têm o mesmo nome. Testei alterando o nome da propriedade para outra coisa (exemplo = proprietario),

class ContaCorrente {
    proprietario;

    constructor(cliente) {
        this.cliente = cliente;
    }

   set cliente(novoValor) {
        if(novoValor instanceof Cliente) {
            this.proprietario = novoValor;
        }
    }

    get cliente() {
        return this.proprietario;
    }
}

E também fazendo igual ao professor (ex= _cliente) .

class ContaCorrente {
    _cliente;

    constructor(cliente) {
        this.cliente = cliente;
    }

   set cliente(novoValor) {
        if(novoValor instanceof Cliente) {
            this._cliente = novoValor;
        }
    }

    get cliente() {
        return this._cliente;
    }
}

Das duas formas, aqui o problema foi resolvido. Espero ter te ajudado :)

Boa tarde, Laís. Testei aqui e, realmente, deu certo. Muito obrigada pela ajuda. :D