Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Método Estático

Seria errado realizar a mesma atividade através de um método estático, como abaixo?

class Codigo{
    static validaTexto(texto){
        if(!/\D{3}-\D{2}-\d{2}/.test(texto)){
            throw new Error ("Código inválido");
        } else {
            console.log("Código válido");
        }
    }
}
1 resposta
solução!

Oi, Lucas, tudo bem?

O método static são criados diretamente na classe e não são chamados dentro das instâncias da classe. Esse tipo de método é utilizado para funções utilitárias, um exemplo:

class StaticClassMethod{
    static myName(){
    return "Ana"
    }
}

Acessando o método através da instância da classe StaticClassMethod:

const staticmethod = new StaticClassMethod console.log(staticmethod.myName())

Mas quando tentamos acessar o método através da instância, como no exemplo acima, é nos retornado um erro staticmethod.myName() is not a function

Para conseguirmos acessar um método estático, devemos passar pela classe, dessa forma:

console.log(StaticClassMethod.myName())// Ana

Já, caso queira chamar um método estático em outro método estático numa mesma classe, a palavra reservada this é necessária, por exemplo:

static myFullName(){
    return `${this.myName()} Santos`
    }

console.log(StaticClassMethod.myFullName()) // Ana Santos

Nesse caso, o método estático não seria interessante. O instrutor propõe o uso do método especial constructor pois com ele podemos inicializar a classe com argumentos, como na atividade:


    constructor(texto) {

        if(!this._valida(texto)) throw new Error(`O texto ${texto} não é um código válido`);
        this._texto = texto;        
    }

Que de cara já nos dá um retorno se o código for inválido, não executando o método valida(texto).

E o get tem o papel de permitir o acesso da propriedade quando acessada diretamente.

Se ficou alguma dúvida, é só falar!