Búsqueda de sitios web

svelte - ¿Pasar una promesa a addEventListener() en TypeScript?


En una aplicación de SvelteKit, estoy tratando de crear un listener de eventos que ejecute una función asíncrona (una mutación) usando Typescript.

onMount(() => {
  document.addEventListener('keyup', handleKeyPress);
});

El argumento que paso a addEventListener es una función async definida como...

async function handleKeyPress(event: KeyboardEvent) {
  if (mainList.length > 0) {
    const press =
      event.key === 'ArrowLeft' ? 'left' : event.key === 'ArrowRight' ? 'right' : null;
    
      if (press) {
        await moveItem(press);
      }
  }
}

Verás, addEventListener espera una función que devuelva void, así que estoy obteniendo este error:

Promise returned in function argument where a void return was expected. eslint

¿Hay alguna manera de solucionar este error?

Respuesta #1

De todos modos no deberías estar haciendo esto; estás filtrando un listener de eventos si no lo eliminas al destruirlo.

Hay elementos especiales para agregar escuchas al documento o a la ventana.

<svelte:document on:keyup={handleKeyPress} />