redis 节点库中的 redis 方法get
具有以下打字稿签名:
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 显示一些错误:
获取键的值。
没有重载匹配此调用。Overload 1 of 14, '(fn: CustomPromisify<(key: string, cb?: Callback) => boolean>): (key: string, cb?: Callback) => boolean',给出以下错误。'(key: string, cb?: Callback) => boolean' 类型的参数不能分配给 'CustomPromisify<(key: string, cb?: Callback) => boolean>' 类型的参数。财产承诺' 在类型 '(key: string, cb?: Callback) => boolean' 中缺失,但在类型 'CustomPromisifyLegacy<(key: string, cb?: Callback) => boolean>' 中是必需的。重载 2 of 14, '(fn: (callback: (err: any, result: (key: string, cb?: Callback) => boolean) => void) => void): () => Promise<(key : string, cb?: Callback) => boolean>',给出以下错误。'(key: string, cb?: Callback) => boolean' 类型的参数不可分配给 '(callback: (err: any, result: (key: string, cb?: Callback) => boolean) 类型的参数=> 无效)=> 无效'。
如何设置正确的签名?