diff --git a/bin/template.ts b/bin/template.ts index 47d2a638..82c3a22b 100644 --- a/bin/template.ts +++ b/bin/template.ts @@ -11,8 +11,9 @@ export interface ResultTypes { pipeline: ChainableCommander; } -export interface ChainableCommander - extends RedisCommander<{ type: "pipeline" }> {} +export interface ChainableCommander extends RedisCommander<{ type: "pipeline" }> { + length: number; +} export type ClientContext = { type: keyof ResultTypes }; export type Result = diff --git a/lib/Pipeline.ts b/lib/Pipeline.ts index 9e887b9d..cf128fbf 100644 --- a/lib/Pipeline.ts +++ b/lib/Pipeline.ts @@ -392,3 +392,7 @@ Pipeline.prototype.exec = function (callback: Callback): Promise> { return _this.promise; } }; + +interface Pipeline { + length: number; +} diff --git a/lib/utils/RedisCommander.ts b/lib/utils/RedisCommander.ts index 8ee140c8..eec27983 100644 --- a/lib/utils/RedisCommander.ts +++ b/lib/utils/RedisCommander.ts @@ -11,8 +11,9 @@ export interface ResultTypes { pipeline: ChainableCommander; } -export interface ChainableCommander - extends RedisCommander<{ type: "pipeline" }> {} +export interface ChainableCommander extends RedisCommander<{ type: "pipeline" }> { + length: number; +} export type ClientContext = { type: keyof ResultTypes }; export type Result = diff --git a/test/typing/pipeline.test-d.ts b/test/typing/pipeline.test-d.ts index b522b5b5..0b859ce0 100644 --- a/test/typing/pipeline.test-d.ts +++ b/test/typing/pipeline.test-d.ts @@ -1,5 +1,5 @@ import { expectType } from "tsd"; -import Redis from "../../built"; +import Redis, { Pipeline } from "../../built"; const redis = new Redis(); @@ -24,3 +24,12 @@ expectType( ]) .exec() ); + +expectType( + redis.pipeline([ + ["set", Buffer.from("foo"), "bar"], + ["incrby", "foo", 42], + ]).length +); + +expectType(({} as unknown as Pipeline).length);