1
resposta

Dúvida sobre o sinal de : em uma arrow function

No código abaixo tem a const validadores. Eu não consegui entender essa linha aqui: dataNascimento:input => validaDataNascimento(input)

Qual é o significado do sinal de : na linha acima??

export function valida(input) {
    const tipoDeInput = input.dataset.tipo

    if(validadores[tipoDeInput]) {
        validadores[tipoDeInput](input)
    }

    if(input.validity.valid) {
        input.parentElement.classList.remove('input-container--invalido')
        input.parentElement.querySelector('.input-mensagem-erro').innerHTML = ''
    } else {
        input.parentElement.classList.add('input-container--invalido')
        input.parentElement.querySelector('.input-mensagem-erro').innerHTML = mostraMensagemDeErro(tipoDeInput, input)
    }
}

const validadores = {
    dataNascimento:input => validaDataNascimento(input)
}

function validaDataNascimento(input) {
    const dataRecebida = new Date(input.value)
    let mensagem = ''

    if(!maiorQue18(dataRecebida)) {
        mensagem = 'Você deve ser maior que 18 anos para se cadastrar.'
    }

    input.setCustomValidity(mensagem)
}

1 resposta

Opa Leonardo, tudo certo?

Nessa linha, o input é o parâmetro que será passado para a função arrow. Como só há um parâmetro, não é necessário usar parênteses.

O código é equivalente a escrever:

const validadores = {
    dataNascimento: (input) => validaDataNascimento(input) 
    // Mesmo que dataNascimento: input => validaDataNascimento(input)
}

Caso você precisasse passar mais de um parâmetro, deveria usar parênteses:

const validadores = {
    dataNascimento: (input, param2, param3) => validaDataNascimento(input, param2, param3) 
}