# 类 GameStroage

该类是渲染进程类,游戏进程不能直接使用

-   实例成员
    -   [`key`](#key)
    -   [`data`](#data)
-   实例方法
    -   构造器[`constructor`](#constructor)
    -   [`read`](#read)
    -   [`write`](#write)
    -   [`setValue`](#setvalue)
    -   [`getValue`](#getvalue)
    -   [`toJSON`](#tojson)
    -   [`clear`](#clear)
    -   [`keys`](#keys)
    -   [`values`](#values)
    -   [`entries`](#entries)
-   静态成员
    -   [`list`](#list)
-   静态方法
    -   [`fromGame`](#fromgame)
    -   [`fromAuthor`](#fromauthor)
    -   [`get`](#get)

## key

```ts
declare var key: string
```

-   成员说明

    该成员表示了这个存储实例的名称

## data

```ts
declare var data: Record<string, any>
```

-   成员说明

    该成员存储了这个存储实例的所有内容,在写入时会将这个成员写入,读取时会覆盖这个成员

## constructor()

```ts
interface GameStorage {
    new(key: string): GameStorage
}
```

-   构造器说明

    传入存储名称,构造一个存储实例。存储名称不建议直接填入,建议使用 [`fromGame`](#fromgame) 或者 [`fromAuthor`](#fromauthor) 方法生成

## read()

```ts
declare function read(): void
```

-   方法说明

    从本地存储读取,并写入到 `data` 成员中

## write()

```ts
declare function write(): void
```

-   方法说明

    将 `data` 成员中的数据写入到本地存储中

## setValue()

```ts
declare function setValue(key: string, value: any): void
```

-   方法说明

    该方法用于更改一个该存储实例上的存储的值

-   示例

    ```js
    myStorage.setValue('key', 123); // 将存储 'key' 设为 123
    ```

## getValue()

```ts
declare function getValue(key: string, defaultValue?: any): any
```

-   参数说明

    -   `key`: 存储键名
    -   `defaultValue`: 当存储不存在时,获取的默认值

-   方法说明

    获取一个存储的值,当值不存在时返回默认值

## toJSON()

```ts
declare function toJSON(): string
```

-   方法说明

    将这个存储实例转化为序列化的 `JSON` 字符串

## clear()

```ts
declare function clear(): void
```

-   方法说明

    将这个存储的所有内容清空

## keys()

```ts
declare function keys(): string[]
```

-   方法说明

    获取到这个存储的所有键,组成一个字符串数组返回

## values()

```ts
declare function values(): any[]
```

-   方法说明

    获取这个存储的所有值,组成一个数组返回

## entries()

```ts
declare function entries(): [string, any][]
```

-   方法说明

    获取这个存储的所有键和值,组成以数组 `[键, 值]` 构成的数组返回

## list

```ts
declare var list: GameStorage[]
```

-   静态成员说明

    该静态成员描述了所有构造的存储实例

-   示例

    ```js
    GameStroage.list.forEach(v => v.clear()); // 清空所有存储实例的存储
    ```

## fromGame()

```ts
declare function fromGame(key: string): string
```

-   静态方法说明

    该静态方法用于生成一个与游戏关联的键,用于生成存储实例,由此生成的存储实例只在本游戏内有效,与其他游戏没有关联。

-   示例

    ```js
    const myStorage = new GameStorage(GameStorage.fromGame('key'));
    ```

## fromAuthor()

```ts
declare function fromAuthor(_: any, key: string): string
```

-   静态方法说明

    该静态方法用于生成一个与作者关联的键,同作者的塔中该存储会共通。第一个参数无用,随便填即可,第二个参数说明的是存储的名称。

-   示例

    ```js
    const myStorage = new GameStorage(GameStorage.fromAuthor(void 0, 'key'));
    const value = myStorage.getValue('key'); // 共通存储,可以从其他塔获取
    ```

## get()

```ts
declare function get(key: string): GameStorage
```

-   静态方法说明

    该静态方法用于获取对应名称的存储实例,等价于 `GameStorage.list.find(v => v.key === key)`