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

Para mim não deu certo o instanceof, alguém mais?

Não sei o que pode ser, conferi o código e as chaves mil vezes mas sempre dava erro dizendo que tinha uma chave } unexpected após a palavra function em:

static ehAutenticavel(autenticavel) {
    return "autenticar" in autenticavel && 
    autenticavel.autenticar instanceof function
}

Então resolvi da maneira abaixo, que não sei com certeza se dá o mesmo resultado mas funcionou aqui.

static ehAutenticavel(autenticavel) {
        if("autenticar" in autenticavel && 
        typeof autenticavel.autenticar === 'function') {
            return true
        }
    }
1 resposta
solução!

Oi estudante, tudo bem?

Desculpe a demora em retornar.

Entendo sua frustração ao encontrar um erro no código e não saber o que pode estar causando. O operador instanceof é utilizado para verificar se um objeto é uma instância de uma determinada classe ou função construtora. No seu caso, o erro pode estar ocorrendo porque a sintaxe utilizada não é a correta.

Uma possível solução seria utilizar a seguinte sintaxe:

static ehAutenticavel(autenticavel) {
    return "autenticar" in autenticavel && 
    autenticavel.autenticar instanceof Function;
}

Note que a palavra Function deve ser escrita com a primeira letra maiúscula.

No entanto, a solução que você encontrou também é válida e pode ser utilizada para verificar se a propriedade autenticar do objeto autenticavel é uma função.

Um abraço e bons estudos.