In your case you are looking for the KeyboardEvent
type. If you additionally want to type your target
, you need to cast it inside your function body. The reason is that it's not possible to statically know that the event handler is on the same element as the one that dispatched the event, so the typings err on the side of caution (see https://github.com/sveltejs/language-tools/issues/579 for more info). So the solution looks something like this:
<script lang="ts">
const onKeyUp = (event: KeyboardEvent) => {
// ...
(event.target as HTMLInputElement)...;
}
</script>
<input type="text" on:keyup={onKeyUp} />
What you can determine is the currentTarget
, for which you can create your own helper type:
export type WithTarget<Event, Target> = Event & { currentTarget: Target };
usage:
<script lang="ts">
import type { WithTarget } from './path/to/your/types/file.ts';
const onKeyUp = (event: WithTarget<KeyboardEvent, HTMLInputElement>) => {
// ...
}
</script>
<input type="text" on:keyup={onKeyUp} />
In general, TypeScript comes with a standard lib of interfaces which define the possible DOM events, which are modelled after MDN's event description, like this one: https://developer.mozilla.org/de/docs/Web/API/KeyboardEvent
React.MouseEvent<HTMLDivElement>
etc here and here – Eureetloir