【发布时间】:2021-02-10 15:53:07
【问题描述】:
redis 节点库中的 redis 方法 get 具有以下 typescript 签名:
export interface Commands<R> {
get(key: string, cb?: Callback<string | null>): R;
}
如果我promisify方法,签名丢失,返回类型变成any。
我尝试过以这种方式设置正确的签名:
const client = redis.createClient(redisOption);
const getAsync = promisify<redis.Commands<boolean>['get']>(client.get).bind(client);
但 ts lint 显示一些错误:
获取键的值。
没有重载匹配这个调用。重载 1 的 14, '(fn: CustomPromisify boolean>): (key: string, cb?: Callback) => boolean',给出如下 错误。 '(key: string, cb?: Callback) => boolean' 类型的参数不能分配给 'CustomPromisify 布尔值>'。 类型 '(key: string, cb?: Callback) => boolean' 中缺少属性 'promisify' 但在类型中是必需的 'CustomPromisifyLegacy 布尔值>'。重载 2 of 14, '(fn: (callback: (err: any, result: (key: string, cb?: Callback) => boolean) => void) => void): () => Promise boolean>',给出以下错误。 '(key: string, cb?: Callback) => boolean' 类型的参数不能分配给 '(callback: (err: any, result: (key: string, cb?: Callback) => boolean) => void) => void'。
如何设置正确的签名?
【问题讨论】:
-
你最后解决了这个问题吗?面临类似的问题。谢谢!
-
@JavierGuzmán nope...
标签: node.js typescript redis node-promisify