You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

91 lines
3.7 KiB

/*
* @Author: BATU1579
* @CreateDate: 2022-07-12 15:05:54
* @LastEditor: BATU1579
* @LastTime: 2022-09-11 10:56:18
* @FilePath: \\src\\types\\storages.d.ts
* @Description: 存储模块
*/
declare module 'storages' {
global {
/**
* @description: storages 模块提供了保存简单数据、用户配置等的支持。保存的数据除非应用被卸载或者被主动删除,否则会一直保留。
*
* storages 支持number, boolean, string等数据类型以及把Object, Array用 `JSON.stringify` 序列化存取。
*
* storages 保存的数据在脚本之间是共享的,任何脚本只要知道 storage 名称便可以获取到相应的数据,因此它不能用于敏感数据的储存。 storages 无法像 Web 开发中 `LocalStorage` 一样提供根据域名独立的存储,因为脚本的路径随时可能改变。
*/
const storages: Storages;
}
interface Storages {
/**
* @description: 创建一个本地存储并返回一个 `Storage` 对象。不同名称的本地存储的数据是隔开的,而相同名称的本地存储的数据是共享的。
*
* **注意!:**
*
* - 本地存储的名称比较重要,尽量使用含有域名、作者邮箱等唯一信息的名称来避免冲突。
*
* @param {string} name 本地存储名称
* @return {Storage} 创建的本地存储对象
* @example
* ```typescript
* let storage = storages.create('12345678@qq.com:ABC');
* ```
*/
create(name: string): Storage;
/**
* @description: 删除一个本地存储以及他的全部数据。
* @param {string} name 本地存储名称
* @return {boolean} 如果该存储不存在,返回 `false` ;否则返回 `true` 。
*/
remove(name: string): boolean;
}
class Storage {
/**
* @description: 从本地存储中取出键为 `key` 的数据并返回。
*
* **注意!:**
*
* - 返回的数据可能是任意数据类型,这取决于使用 `Storage.put` 保存该键值的数据时的数据类型。
*
* @param {string} key 要读取的键名
* @param {any} [defaultValue] 键对应的默认值
* @return {any | undefined} 键为 `key` 的数据。如果该存储中不包含该数据,这时若指定了默认值参数则返回默认值,否则返回 undefined。
*/
get(key: string, defaultValue?: any): any | undefined;
/**
* @description: 把值 `value` 保存到本地存储中。 `value` 可以是 `undefined` 以外的任意数据类型。如果 `value` 为 `undefined` 则抛出 `TypeError` 。
*
* **注意!:**
*
* - 存储的过程实际上是使用 `JSON.stringify` 把 `value` 转换为字符串再保存,因此 `value` 必须是可 JSON 化的才能被接受。
*
* @param {string} key 键名
* @param {Object | null} value 要存储的值
*/
put(key: string, value: Object | null): void;
/**
* @description: 移除键值为 `key` 的数据。
* @param {string} key 要移除的键名
*/
remove(key: string): void;
/**
* @description: 检查该本地存储是否包含键值为 key 的数据。
* @param {string} key 要检查的键名
* @return {boolean} 包含则返回 true,否则返回 false。
*/
contains(key: string): boolean;
/**
* @description: 移除该本地存储的所有数据。
*/
clear(): void;
}
}