Skip to content

Commit 1a87b23

Browse files
trim21luin
andauthored
fix: add types for known events (#1694)
Co-authored-by: Zihua Li <[email protected]>
1 parent 89ebcb6 commit 1a87b23

File tree

2 files changed

+110
-1
lines changed

2 files changed

+110
-1
lines changed

lib/Redis.ts

+42-1
Original file line numberDiff line numberDiff line change
@@ -838,7 +838,48 @@ class Redis extends Commander implements DataHandledable {
838838
}
839839
}
840840

841-
interface Redis extends EventEmitter {}
841+
interface Redis extends EventEmitter {
842+
on(event: "message", cb: (channel: string, message: string) => void): this;
843+
once(event: "message", cb: (channel: string, message: string) => void): this;
844+
845+
on(
846+
event: "messageBuffer",
847+
cb: (channel: Buffer, message: Buffer) => void
848+
): this;
849+
once(
850+
event: "messageBuffer",
851+
cb: (channel: Buffer, message: Buffer) => void
852+
): this;
853+
854+
on(
855+
event: "pmessage",
856+
cb: (pattern: string, channel: string, message: string) => void
857+
): this;
858+
once(
859+
event: "pmessage",
860+
cb: (pattern: string, channel: string, message: string) => void
861+
): this;
862+
863+
on(
864+
event: "pmessageBuffer",
865+
cb: (pattern: string, channel: Buffer, message: Buffer) => void
866+
): this;
867+
once(
868+
event: "pmessageBuffer",
869+
cb: (pattern: string, channel: Buffer, message: Buffer) => void
870+
): this;
871+
872+
on(event: "error", cb: (error: Error) => void): this;
873+
once(event: "error", cb: (error: Error) => void): this;
874+
875+
on(event: RedisStatus, cb: () => void): this;
876+
once(event: RedisStatus, cb: () => void): this;
877+
878+
// base method of EventEmitter
879+
on(event: string | symbol, listener: (...args: any[]) => void): this;
880+
once(event: string | symbol, listener: (...args: any[]) => void): this;
881+
}
882+
842883
applyMixin(Redis, EventEmitter);
843884

844885
addTransactionSupport(Redis.prototype);

test/typing/events.test-.ts

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import { expectType } from "tsd";
2+
import { Redis } from "../../built";
3+
4+
const redis = new Redis();
5+
6+
expectType<Redis>(redis.on("connect", () => {}));
7+
expectType<Redis>(redis.on("ready", () => {}));
8+
expectType<Redis>(redis.on("close", () => {}));
9+
expectType<Redis>(redis.on("end", () => {}));
10+
expectType<Redis>(
11+
redis.on("error", (error) => {
12+
expectType<Error>(error);
13+
})
14+
);
15+
16+
expectType<Redis>(redis.once("connect", () => {}));
17+
expectType<Redis>(redis.once("ready", () => {}));
18+
expectType<Redis>(redis.once("close", () => {}));
19+
expectType<Redis>(redis.once("end", () => {}));
20+
expectType<Redis>(
21+
redis.once("error", (error) => {
22+
expectType<Error>(error);
23+
})
24+
);
25+
26+
redis.on("message", (channel, message) => {
27+
expectType<string>(channel);
28+
expectType<string>(message);
29+
});
30+
31+
redis.on("messageBuffer", (channel, message) => {
32+
expectType<Buffer>(channel);
33+
expectType<Buffer>(message);
34+
});
35+
36+
redis.on("pmessage", (pattern, channel, message) => {
37+
expectType<string>(pattern);
38+
expectType<string>(channel);
39+
expectType<string>(message);
40+
});
41+
42+
redis.on("pmessageBuffer", (pattern, channel, message) => {
43+
expectType<string>(pattern);
44+
expectType<Buffer>(channel);
45+
expectType<Buffer>(message);
46+
});
47+
48+
redis.once("message", (channel, message) => {
49+
expectType<string>(channel);
50+
expectType<string>(message);
51+
});
52+
53+
redis.once("messageBuffer", (channel, message) => {
54+
expectType<Buffer>(channel);
55+
expectType<Buffer>(message);
56+
});
57+
58+
redis.once("pmessage", (pattern, channel, message) => {
59+
expectType<string>(pattern);
60+
expectType<string>(channel);
61+
expectType<string>(message);
62+
});
63+
64+
redis.once("pmessageBuffer", (pattern, channel, message) => {
65+
expectType<string>(pattern);
66+
expectType<Buffer>(channel);
67+
expectType<Buffer>(message);
68+
});

0 commit comments

Comments
 (0)