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

event implícito

Na atividade Revisando decorators da aula 4 do curso de Typescript, foi introduzida uma forma de fazer uso do event de forma implícita, porém fiquei com uma dúvida.

No código abaixo, similar ao exibido na aula, apesar de ter funcionado corretamente, não entendi de onde a variável event vem... quem é que passa seu valor? Isso vem de ...args?

export function Throttle(timeInMilliseconds: number) {
  return function(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
    const originalMethod = descriptor.value;

    let timer = 0;

    descriptor.value = function(...args: any[]) {
      if (event) {
        event.preventDefault();
      }
      clearInterval(timer);

      timer = setTimeout(() => originalMethod.apply(this, args), timeInMilliseconds);
    };

    return descriptor;
  };
}

Ao debugar, args possui um array com uma única posição, porém não recebe o nome de event.

O que estou tentando fazer é entender de onde vem esse valor. Quem passou o valor para a variaǘel event? Se não estivesse utilizando assim, qual seria a melhor forma de pegar o valor do event?

1 resposta
solução!

Oi Jefferson, a ideia de implícito é justamente a de não termos que ter o parâmetro nomeado em algum lugar. Então, você não recebe ele nos parênteses, por que fazer isso, deixaria de ser um parâmetro implícito e passaria a ser explícito.

Mas de onde vem?

Bom, todo código de responde a um evento recebe esse parâmetro independente de você explicitar ou não.

Por questões de segurança, adicionamos o if ali, por que, caso o código seja executado por algum outro meio diferente de um evento, não teremos problema por que o event será undefined e não passará no if.

Deu pra entender?