Skip to content

Commit 80e530e

Browse files
committed
feat: refine SuggestedEventName type for better type inference and remove redundant type checks in tests
1 parent 01e4ade commit 80e530e

2 files changed

Lines changed: 1 addition & 6 deletions

File tree

src/utils/EventEmitter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ type KnownEventName<Events extends object> = Extract<{
1919
}[keyof Events], EventName>;
2020
type EventListener<Events extends object, Key extends EventName> = Key extends keyof Events ? Events[Key] extends AnyListener ? Events[Key] : never : AnyListener;
2121
type EventListenerArgs<Events extends object, Key extends EventName> = ListenerArgs<EventListener<Events, Key>>;
22-
type SuggestedEventName<Events extends object, ExtraEvents extends EventName> = KnownEventName<Events> | (ExtraEvents & {});
22+
type SuggestedEventName<Events extends object, ExtraEvents extends EventName> = KnownEventName<Events> | (ExtraEvents & object);
2323
type HasBroadEventKeys<Events extends object> = string extends keyof Events ? true : symbol extends keyof Events ? true : false;
2424
type DefaultExtraEvents<Events extends object> = HasBroadEventKeys<Events> extends true ? EventName : never;
2525

test/eventEmitter.test.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import {describe, expect, test, vi} from "vitest";
22
import {EventEmitter} from "../src/utils/EventEmitter.js";
33

44
type Assert<T extends true> = T;
5-
type IsAny<T> = 0 extends (1 & T) ? true : false;
65
type IsExact<T, Expected> = [T] extends [Expected] ? ([Expected] extends [T] ? true : false) : false;
76

87
type TestEvents = {
@@ -48,10 +47,6 @@ describe("EventEmitter", () => {
4847
const emitter = new EventEmitter<TestEvents>();
4948

5049
emitter.on("data", (value, label) => {
51-
type ValueIsNotAny = Assert<IsAny<typeof value> extends false ? true : false>;
52-
type LabelIsNotAny = Assert<IsAny<typeof label> extends false ? true : false>;
53-
type ValueIsNumber = Assert<IsExact<typeof value, number>>;
54-
type LabelIsString = Assert<IsExact<typeof label, string>>;
5550
const typedValue: number = value;
5651
const typedLabel: string = label;
5752

0 commit comments

Comments
 (0)