diff --git a/index.d.ts b/index.d.ts index b7fae88..29c14ec 100644 --- a/index.d.ts +++ b/index.d.ts @@ -2,5 +2,6 @@ * Delegates event to a selector. */ declare type CombinedElements = EventTarget | EventTarget[] | NodeListOf | String; -declare const _default: (elements: CombinedElements, selector: string, type: string, callback: () => any, useCapture: boolean | AddEventListenerOptions) => any; -export = _default; +declare function delegate(selector: string, type: string, callback?: Function, useCapture?: boolean | AddEventListenerOptions): object; +declare function delegate(elements: CombinedElements, selector: string, type: string, callback?: Function, useCapture?: boolean | AddEventListenerOptions): object; +export = delegate; diff --git a/index.ts b/index.ts index 06e6dfa..bd9e92f 100644 --- a/index.ts +++ b/index.ts @@ -4,8 +4,8 @@ function _delegate( element: EventTarget, selector: string, type: string, - callback: () => any, - useCapture: boolean | AddEventListenerOptions + callback?: Function, + useCapture?: boolean | AddEventListenerOptions ) { const listenerFn = event => { event.delegateTarget = event.target.closest(selector); @@ -64,12 +64,25 @@ function _delegate( * Delegates event to a selector. */ type CombinedElements = EventTarget | EventTarget[] | NodeListOf | String; -export = function delegate( +function delegate( + selector: string, + type: string, + callback?: Function, + useCapture?: boolean | AddEventListenerOptions +): object; +function delegate( elements: CombinedElements, selector: string, type: string, - callback: () => any, - useCapture: boolean | AddEventListenerOptions + callback?: Function, + useCapture?: boolean | AddEventListenerOptions + ): object; +function delegate( + elements, + selector, + type, + callback?, + useCapture? ) { // Handle the regular Element usage if (typeof (elements as EventTarget).addEventListener === 'function') { @@ -78,7 +91,7 @@ export = function delegate( // Handle Element-less usage, it defaults to global delegation if (typeof type === 'function') { - return _delegate(document, elements as string, selector as string, type as () => any, callback as boolean | AddEventListenerOptions); + return _delegate(document, elements as string, selector as string, type as Function, callback as boolean | AddEventListenerOptions); } // Handle Selector-based usage @@ -91,3 +104,5 @@ export = function delegate( return _delegate(element, selector, type, callback, useCapture); }); } + +export = delegate; diff --git a/package.json b/package.json index e1970f7..f089500 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "scripts": { "test": "xo !index.js && ava && tsc", "prepublish": "tsc", - "preversion": "tsc" + "build": "tsc" }, "xo": { "envs": [