diff --git a/src/Draggable/Emitter/Emitter.js b/src/Draggable/Emitter/Emitter.ts similarity index 80% rename from src/Draggable/Emitter/Emitter.js rename to src/Draggable/Emitter/Emitter.ts index 11ff3fc8..6536a50c 100644 --- a/src/Draggable/Emitter/Emitter.js +++ b/src/Draggable/Emitter/Emitter.ts @@ -1,19 +1,25 @@ +import AbstractEvent from 'shared/AbstractEvent'; + +type CallbackFunction = (event: AbstractEvent) => void; + +interface Callback { + [key: string]: CallbackFunction[]; +} + /** * The Emitter is a simple emitter class that provides you with `on()`, `off()` and `trigger()` methods * @class Emitter * @module Emitter */ export default class Emitter { - constructor() { - this.callbacks = {}; - } + public callbacks: Callback = {}; /** * Registers callbacks by event name * @param {String} type * @param {...Function} callbacks */ - on(type, ...callbacks) { + on(type: string, ...callbacks: CallbackFunction[]) { if (!this.callbacks[type]) { this.callbacks[type] = []; } @@ -28,7 +34,7 @@ export default class Emitter { * @param {String} type * @param {Function} callback */ - off(type, callback) { + off(type: string, callback: CallbackFunction) { if (!this.callbacks[type]) { return null; } @@ -48,7 +54,7 @@ export default class Emitter { * Triggers event callbacks by event object * @param {AbstractEvent} event */ - trigger(event) { + trigger(event: AbstractEvent) { if (!this.callbacks[event.type]) { return null; } diff --git a/src/Draggable/Emitter/index.js b/src/Draggable/Emitter/index.js deleted file mode 100644 index ca99e6eb..00000000 --- a/src/Draggable/Emitter/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import Emitter from './Emitter'; - -export default Emitter; diff --git a/src/Draggable/Emitter/index.ts b/src/Draggable/Emitter/index.ts new file mode 100644 index 00000000..8933ecef --- /dev/null +++ b/src/Draggable/Emitter/index.ts @@ -0,0 +1 @@ +export {default} from './Emitter'; diff --git a/src/Draggable/Emitter/tests/Emitter.test.js b/src/Draggable/Emitter/tests/Emitter.test.ts similarity index 96% rename from src/Draggable/Emitter/tests/Emitter.test.js rename to src/Draggable/Emitter/tests/Emitter.test.ts index d1cc92ec..02f1ab1a 100644 --- a/src/Draggable/Emitter/tests/Emitter.test.js +++ b/src/Draggable/Emitter/tests/Emitter.test.ts @@ -2,10 +2,10 @@ import AbstractEvent from 'shared/AbstractEvent'; import Emitter from '../Emitter'; -class TestEvent extends AbstractEvent {} +class TestEvent extends AbstractEvent {} describe('Emitter', () => { - let emitter; + let emitter: Emitter; beforeEach(() => { emitter = new Emitter();