Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
3
respostas

event is undefined

O seguinte código não funciona com o seguinte erro: "ReferenceError: event is not defined"

export function throttle(miliseconds: number = 500) {

    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {

        let timer = 0;
        const method = descriptor.value;

        descriptor.value = function (...args: any[]) {
            if (event)
                event.preventDefault();
            clearInterval(timer);
            timer = setTimeout(() => method.apply(this, args), miliseconds);
        }

        return descriptor;
    }
}
3 respostas

Qual versão do TypeScript está usando?

Olá,

Encontrei o mesmo erro ao executar o código do "throttle", estou utilizando o Firefox Nightly durante o treinamento. Como o instrutor Flávio utiliza o Google Chrome, executei o mesmo código e no navegador do google funciona.

Alguma razão para no firefox não funcionar?

Alguma dica de como "debugar" esse erro, supondo que não fosse um treinamento, mas sim mundo real?

No opera também funciona, mas não faz diferença, já que chrome e opera utilizam o chromium como base.

solução!

Parece que o Firebox não suporta, ainda, o event implícito. Nesse caso remova a instrução event.preventDefault (). Você fará esse procedimento no próprio método e não há nenhum problema nisso. Esse event implícito foi um plug para ficar mais elegante do que já é.