diff --git a/types/ioredis/index.d.ts b/types/ioredis/index.d.ts index cbe5b0f8e2..99c99dcf04 100644 --- a/types/ioredis/index.d.ts +++ b/types/ioredis/index.d.ts @@ -30,7 +30,7 @@ interface RedisStatic { (port?: number, host?: string, options?: IORedis.RedisOptions): IORedis.Redis; (host?: string, options?: IORedis.RedisOptions): IORedis.Redis; (options?: IORedis.RedisOptions): IORedis.Redis; - Cluster: IORedis.Cluster; + Cluster: IORedis.ClusterStatic; Command: IORedis.Command; } @@ -873,11 +873,16 @@ declare namespace IORedis { type ClusterNode = string | number | NodeConfiguration; + type NodeRole = 'master' | 'slave' | 'all'; + interface Cluster extends NodeJS.EventEmitter, Commander { - new(nodes: ClusterNode[], options?: ClusterOptions): Redis; connect(callback: () => void): Promise; disconnect(): void; - nodes(role: string): Redis[]; + nodes(role?: NodeRole): Redis[]; + } + + interface ClusterStatic extends NodeJS.EventEmitter, Commander { + new (nodes: ClusterNode[], options?: ClusterOptions): Cluster; } interface RedisOptions { diff --git a/types/ioredis/ioredis-tests.ts b/types/ioredis/ioredis-tests.ts index fdb1fafcc1..f3cafe1f18 100644 --- a/types/ioredis/ioredis-tests.ts +++ b/types/ioredis/ioredis-tests.ts @@ -207,3 +207,22 @@ new Redis.Cluster([], { new Redis.Cluster([], { clusterRetryStrategy: (times: number, reason?: Error) => 1 }); + +// Cluster types +const clusterOptions: Redis.ClusterOptions = {}; +const cluster = new Redis.Cluster( + [ + { + host: 'localhost', + port: 6379 + } + ], + clusterOptions +); +cluster.on('end', () => console.log('on end')); +cluster.nodes().map(node => { + node.pipeline() + .flushdb() + .exec() + .then(result => console.log(result)); +});