diff --git a/packages/utils/src/createListener.spec.ts b/packages/utils/src/createListener.spec.ts index 0dcaa26..94ef55f 100644 --- a/packages/utils/src/createListener.spec.ts +++ b/packages/utils/src/createListener.spec.ts @@ -14,7 +14,17 @@ describe("createListener", () => { onFooBar(0, "1") expect(receivedValue).toEqual({ foo: 0, bar: "1" }) }) - it('returns a tuple with a void observable and its corresponding event-emitter when no "event creator" is provided', () => { + it('returns a tuple with a typed observable and its corresponding event-emitter when no "event creator" is provided', () => { + const [foo$, onFoo] = createListener() + let receivedValue + foo$.subscribe((val) => { + receivedValue = val + }) + expect(receivedValue).toBe(undefined) + onFoo("foo") + expect(receivedValue).toEqual("foo") + }) + it('returns a tuple with a void observable and its corresponding event-emitter when no "event creator" and no type is provided', () => { const [clicks$, onClick] = createListener() let count = 0 clicks$.subscribe(() => { diff --git a/packages/utils/src/createListener.ts b/packages/utils/src/createListener.ts index 85286fe..211e674 100644 --- a/packages/utils/src/createListener.ts +++ b/packages/utils/src/createListener.ts @@ -1,11 +1,14 @@ import { Observable, Subject } from "rxjs" -const defaultMapper: any = () => {} +const defaultMapper: any = (v: unknown) => v export function createListener( mapper: (...args: A) => T, ): [Observable, (...args: A) => void] -export function createListener(): [Observable, () => void] +export function createListener(): [ + Observable, + (payload: T) => void, +] export function createListener( mapper: (...args: A) => T = defaultMapper,