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} />
