Skip to content

BrowserStorage

하나의 Data Model을 제어하는 로컬스토리지 | 세션스토리지 클래스

arguments

이름타입설명
keyTKey extends string스토리지에 저장할 key
mapperBrowserStorageMapper<TValue>스토리지에 저장할 데이터의 mapper 클래스 인스턴스
storageTypeBrowserStorageType스토리지 타입 (세션스토리지 | 로컬스토리지)

example

원사타입 데이터를 관리하는 Storage

ts
import { BrowserStorage } from 'utils-dev-krak/common';
import type { BrowserStorageMapper } from 'utils-dev-krak/common';

/**
 * Mapper 클래스를 구현해줍니다.
 */
class CountWrapper implements BrowserStorageMapper<number> {
  fromJson(json: number): number | null {
    if (json === null) return null;
    return json;
  }

  toJson(target: number): number {
    return target;
  }
}

const CountStorageKey = 'count';
const CountStorage = new BrowserStorage(CountStorageKey, new CountWrapper());

CountStorage.set(0));
CountStorage.get(); // 0
CountStorage.set(1);
CountStorage.get(); // 1

Data Model 클래스를 관리하는 Storage

ts
import { BrowserStorage } from 'utils-dev-krak/common';
import type { BrowserStorageMapper } from 'utils-dev-krak/common';

class Model {
  id: number;
  name: string;
}

/**
 * Mapper 클래스를 구현해줍니다.
 */
class ModelMapper implements BrowserStorageMapper<Model> {
  fromJson(json: Model): Model | null {
    if (json === null) return null;
    return new Model(json.id, json.name);
  }

  toJson(target: Model): Model {
    return { id: target.id, name: target.name };
  }
}

const ModelStorageKey = 'model';
const ModelStorage = new BrowserStorage(ModelStorageKey, new ModelMapper());

ModelStorage.set({ id: 1, name: 'man' });
ModelStorage.get(); // { id: 1, name: 'man' }

세션스토리지에서 관리하기

ts
import { BrowserStorage, BrowserStorageType } from 'utils-dev-krak/common';
import type { BrowserStorageMapper } from 'utils-dev-krak/common';

/**
 * Mapper 클래스를 구현해줍니다.
 */
class CountWrapper implements BrowserStorageMapper<number> {
  fromJson(json: number): number | null {
    if (json === null) return null;
    return json;
  }

  toJson(target: number): number {
    return target;
  }
}

/**
 * 세번째 인자에 `BrowserStorageType.sessionStorage`를 추가 
 */
const CountStorageKey = 'count';
const CountStorage = new BrowserStorage(CountStorageKey, new CountWrapper(), BrowserStorageType.sessionStorage);

CountStorage.set(0);
CountStorage.get(); // 0
CountStorage.set(1);
CountStorage.get(); // 1