【发布时间】:2022-01-04 09:40:39
【问题描述】:
我正在尝试使用像 client.ZADD('test', 10, 'test') 这样的 TypeScript 向 Redis 中的排序集添加一个值,但这会引发错误
Argument of type '["test", 10, "test"]' is not assignable to parameter of type '[key: string, members: ZMember | ZMember[], options?: ZAddOptions | undefined] | [options: CommandOptions<ClientCommandOptions>, key: string, members: ZMember | ZMember[], options?: ZAddOptions | undefined]'.
Type '["test", 10, "test"]' is not assignable to type '[options: CommandOptions<ClientCommandOptions>, key: string, members: ZMember | ZMember[], options?: ZAddOptions | undefined]'.
Type at position 0 in source is not compatible with type at position 0 in target.
Type 'string' is not assignable to type 'CommandOptions<ClientCommandOptions>'.
Type 'string' is not assignable to type '{ readonly [symbol]: true; }'.
【问题讨论】:
-
看起来
ZADD接受三个参数 ([key: string, members: ZMember | ZMember[], options?: ZAddOptions | undefined]) 或四个 ([options: CommandOptions<ClientCommandOptions>, key: string, members: ZMember | ZMember[], options?: ZAddOptions | undefined])。假设您想要三个值之一,10与ZMember | ZMember[]兼容,test与ZAddOptions | undefined兼容吗? TS 假设您要进行第二个签名,并要求您提供CommandOptions<ClientCommandOptions>作为第一个参数。 -
@doup 尝试通过导入
commandOptions并将client.ZADD('test', 10, 'test')更新为clinet.zAdd(commandOptions({}), 'test', 10, 'test')来执行此操作,但我收到此错误Type '[CommandOptions<ClientCommandOptions>, "test", 10, "test"]' is not assignable to type '[options: CommandOptions<ClientCommandOptions>, key: string, members: ZMember | ZMember[], options?: ZAddOptions | undefined]'. Type at position 2 in source is not compatible with type at position 2 in target. Type 'number' is not assignable to type 'ZMember | ZMember[]
标签: javascript node.js typescript redis node-redis