1
resposta

Deixando propriedade numeroDeContas privada.

//Criando classe ContaCorrente.
export class ContaCorrente {

    //Propriedades privadas do ByteBank. Não mexa!
    static #numeroDeContas = 0;
    #saldo = 0;
    #cliente;

    constructor(cliente, agencia) {
        this.cliente = cliente;
        this.agencia = agencia;
        ContaCorrente.#numeroDeContas += 1;
    }

    //Usando acessor get para retornar valor de contas já criadas.
    static get numeroDeContas() {
        return ContaCorrente.#numeroDeContas;
    }

(...resto do código...)

Executando o código:

const conta1 = new ContaCorrente(cliente: cliente1, agência: 1002);
const conta2 = new ContaCorrente(cliente: cliente2, agência: 1001);

//Como a propriedade numeroDeContas é privada (para evitar alterações no seu valor), então eu usei um get para retornar o valor de numeroDeContas, e conseguir ver o número de contas já criadas.
console.log(`O número de contas criada é: ${ContaCorrente.numeroDeContas}.`); // O resultado no console será: O número de contas criada é: 2.

Eu estou usando o " # "para deixar os métodos privados, mas vou deixar o código usando o " _ " abaixo:

//Criando classe ContaCorrente.
export class ContaCorrente {

    //Propriedades privadas do ByteBank. Não mexa!
    static _numeroDeContas = 0;
    _saldo = 0;
    _cliente;

    constructor(cliente, agencia) {
        this.cliente = cliente;
        this.agencia = agencia;
        ContaCorrente._numeroDeContas += 1;
    }

    //Usando acessor get para retornar valor de contas já criadas.
    static get numeroDeContas() {
        return ContaCorrente._numeroDeContas;
    }

(...resto do código...)

Executando o código:

const conta1 = new ContaCorrente(cliente: cliente1, agência: 1002);
const conta2 = new ContaCorrente(cliente: cliente2, agência: 1001);

//Como a propriedade numeroDeContas é privada (para evitar alterações no seu valor), então eu usei um get para retornar o valor de numeroDeContas, e conseguir ver o número de contas já criadas.
console.log(`O número de contas criada é: ${ContaCorrente.numeroDeContas}.`); // O resultado no console será: O número de contas criada é: 2.
1 resposta

Olá Gustavo, tudo bem com você?

Peço desculpas pela demora no retorno.

Fico feliz em ver sua contribuição no fórum Alura, ela é muito importante. Gostaria de complementar que o uso da cerquilha (#) na definição de atributos e métodos privados foi implementado oficialmente na ECMAScript 2022 (European Computer Manufacturers Association).

Para conhecer um pouco mais sobre as novidades ECMAScript 2022 ou ES2022, recomendo a leitura do seguinte artigo, onde será apresentado sobre o uso da cerquilha (#), o método .at() usado para buscar um item em um array ou string com base no índice informado, entre outras novidades.

O conteúdo recomendado acima está em inglês, o uso da língua inglesa é bem comum na área de tecnologia, mas não se preocupe, caso não tenha afinidade com essa linguagem, recomendo que utilize o tradutor do navegador para uma melhor compressão.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.