我查看了类型的源代码,似乎 egget
被定义为一个函数:
get(key: string, cb?: Callback<string | null>): R;
而hset
定义为:
hset: OverloadedSetCommand<string, number, R>;
AltoughOverloadedSetCommand
定义为
export interface OverloadedCommand<T, U, R> {
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, arg6: T, cb?: Callback<U>): R;
(arg1: T, arg2: T, arg3: T, arg4: T, arg5: T, cb?: Callback<U>): R;
(arg1: T, arg2: T, arg3: T, arg4: T, cb?: Callback<U>): R;
(arg1: T, arg2: T, arg3: T, cb?: Callback<U>): R;
(arg1: T, arg2: T | T[], cb?: Callback<U>): R;
(arg1: T | T[], cb?: Callback<U>): R;
(...args: Array<T | Callback<U>>): R;
}
似乎它被解释为一个属性(同样的情况发生在 Webstorm 中,不仅在 vscode 中)。
如果我手动将定义覆盖为:
hset(hash: string, field: string, value:any): R;
代码完成显示了预期的功能。
也许你可以在https://github.com/DefinitelyTyped/DefinitelyTyped上提出一个问题,但现在我想你必须接受它。