Tem duas linhas do código que realmente não entendi o que acontece exatamente.
export function valida(input) {
const tipoDeInput = input.dataset.tipo
if(validadores[tipoDeInput]) {
validadores[tipoDeInput](input)
}
}
Primeiro dentro do if, entendo até a parte que estamos procurando dentro do array validadores, mas não entendi o que o (input) faz ali, isso tá como parâmetro de função ou o quê? Só entendi que ele é passado caso o array tenha aquele tipo de (input) mas o que ele faz ali entendi nada.
O segundo é justmente o array validadores.
const validadores = {
dataNascimento:input => validaDataNascimento(input)
}
Eu entendi a segunda metade da linha, onde é chamada a função e passado o parâmetro, mas a primeira parte, até entendi o dataNascimento, que é o data-atribbute definido no HTML, mas o que os dois pontos : tá fazendo ali?
Eu sei que essas duas partes do código se comunicam, mas não entendi como, traduzindo isso na lógica funciona.