From 0e9158b352d7e7237d1cf2d3e881e6fe395bdacb Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Wed, 12 Aug 2020 11:07:33 +0200 Subject: [PATCH] Typings for createEventDispatcher Makes it possible to explicitly type which events can be dispatched like so: ```ts const bla2 = createEventDispatcher<{click: boolean}>(); bla2('click', ''); // error, type string not assignable to type boolean bla2('qwd', true); // error, "qwd" not assignable to "click" ``` #5211 --- src/runtime/internal/lifecycle.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/runtime/internal/lifecycle.ts b/src/runtime/internal/lifecycle.ts index 34d52672a2..304e8d6a68 100644 --- a/src/runtime/internal/lifecycle.ts +++ b/src/runtime/internal/lifecycle.ts @@ -27,7 +27,9 @@ export function onDestroy(fn) { get_current_component().$$.on_destroy.push(fn); } -export function createEventDispatcher() { +export function createEventDispatcher< + EventMap extends {} = any +>(): >(type: EventKey, detail?: EventMap[EventKey]) => void { const component = get_current_component(); return (type: string, detail?: any) => { @@ -61,4 +63,4 @@ export function bubble(component, event) { if (callbacks) { callbacks.slice().forEach(fn => fn(event)); } -} \ No newline at end of file +}