以下是对 WxtStorage
接口及其相关类型中各方法的参数、返回值、用法和适用场景的详细解释:
getItem
方法
getItem<TValue>(key: StorageItemKey, opts: GetItemOptions<TValue> & {
fallback: TValue }): Promise<TValue>;
getItem<TValue>(key: StorageItemKey, opts?: GetItemOptions<TValue>): Promise<TValue | null>;
- 参数:
key
:类型为StorageItemKey
,格式是${StorageArea}:${string}
,用于指定要获取的存储项的键。opts
:可选参数,类型为GetItemOptions<TValue>
,其中fallback
为默认值。若提供fallback
且未找到对应键值时,会返回该默认值;若不提供fallback
,未找到键值时返回null
。
- 返回值:
- 若提供
fallback
,返回一个Promise<TValue>
,表示异步获取到的存储项值。 - 若未提供
fallback
,返回Promise<TValue | null>
,可能为存储项值,也可能为null
。
- 若提供
- 用法:
// 获取值,未找到时返回 null
storage.getItem<number>("local:installDate").then(value => {
console.log(value);
});
// 获取值,未找到时返回 fallback 值
storage.getItem<number>("local:installDate", {
fallback: 0 }).then(value => {
console.log(value);
});
- 适用场景:需要从存储中获取单个值时使用,例如获取用户的安装日期、计数器值等。
getItems
方法
getItems(keys: Array<StorageItemKey | WxtStorageItem<any, any> | {
key: StorageItemKey; options?: GetItemOptions<any>; }>): Promise<Array<{
key: StorageItemKey; value: any; }>>;
- 参数:
keys
:数组类型,元素可以是StorageItemKey
、WxtStorageItem
或者包含key
和options
的对象,用于指定要获取的多个存储项。
- 返回值:
- 返回
Promise<Array<{ key: StorageItemKey; value: any; }>>
,表示异步获取到的多个存储项的键值对数组。
- 返回
- 用法:
storage.getItems(["local:installDate", "session:someCounter"]).then(items => {
items.forEach(item => {
console.log(item.key, item.value);
});
});
- 适用场景:需要同时获取多个存储项的值时使用,例如一次性获取用户的多个设置项。
getMeta
方法
getMeta<T extends Record<string, unknown>>(key: StorageItemKey): Promise<T>;
- 参数:
key
:类型为StorageItemKey
,用于指定要获取元数据的存储项的键。
- 返回值:
- 返回
Promise<T>
,表示异步获取到的存储项的元数据对象。
- 返回
- 用法:
storage.getMeta("local:installDate").then(meta => {
console.log(meta);
});
- 适用场景:需要获取存储项的元数据时使用,例如存储项的版本信息、创建时间等。
getMetas
方法
getMetas(keys: Array<StorageItemKey | WxtStorageItem<any, any>>): Promise<Array<{
key: StorageItemKey; meta: any; }>>;
- 参数:
keys
:数组类型,元素可以是StorageItemKey
或WxtStorageItem
,用于指定要获取元数据的多个存储项。
- 返回值:
- 返回
Promise<Array<{ key: StorageItemKey; meta: any; }>>
,表示异步获取到的多个存储项的键和对应的元数据数组。
- 返回
- 用法:
storage.getMetas(["local:installDate", "session:someCounter"]).then(metas => {
metas.forEach(meta => {
console.log(meta.key, meta.meta);
});
});
- 适用场景:需要同时获取多个存储项的元数据时使用。
setItem
方法
setItem<T>(key: StorageItemKey, value: T | null):