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

Por que não devo fazer meu código assim?

Boa tarde, segue o código desenvolvido:

class Codigo{
            constructor(codigo) {
                this._codigo = /\D{3}-\D{2}-\d{2}/.test(codigo) ? console.log("Código válido!") : console.log("Código inválido!");
            }
        }

let codigoValido = new Codigo('GWZ-JJ-12');

Por favor, alguém me explica pq não devo solucionar o problema dessa maneira?

3 respostas
solução!

Fala ai Gisele, tudo bem? Nesse caso, você não está passando o valor do codigo informado via construtor para a propriedade da classe e sim o retorno da função .test.

O ideal é que você tenha uma função que vai ler o valor do construtor e setar como atributo da classe e nela vai ter as validações, algo assim:

class Codigo{
    constructor(codigo) {
        this.setCodigo(codigo)
    }

    setCodigo(codigo) {
        if (!/\D{3}-\D{2}-\d{2}/.test(codigo)) {
            throw new Error('Código inválido')
        }
        this.codigo = codigo
    }
}

Espero ter ajudado.

Oi Matheus, vc ajudou sim. Era isso mesmo que eu queria saber. Obrigada!

Magina Gisele, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.