我想向用户介绍通过键获取值的更好的API.其思想是允许将键作为数组传递或作为列逐个传递.例如:
mget('key1', 'key2', 'key3');
mget(['key1', 'key2', 'key3']);
我try 的实现,实际上大部分时间都是有效的
async mget(...keys: string[]): Promise<StorageValue>;
async mget(keys: string[]): Promise<StorageValue>;
@requireStorage
async mget(firstArg: string | string[], ...rest: string[]): Promise<Array<StorageValue>> {
const keys = Array.isArray(firstArg) ? firstArg : Array(firstArg, ...rest);
// do something with keys
}
但问题是当函数调用时没有任何键,比如mget()
,所以我得到keys===[undefined]
,因为firstArg
没有定义,所以它用undefined
参数创建新的array.
虽然我可以修复它,但它变得更难看,更容易出错.我感兴趣的是有一种更好更简单的方法来实现如此容易的重载,而这在TS中根本不是那么容易的.