storage-typed v1.0.1
storage-typed
Web Storage only accepts string value so you should write this verbose code everytime:
// get
try {
const value = window.localStorage.getItem(key);
return value ? JSON.parse(value) : null;
} catch (e) {
/* ... */
}
// set
window.localStorage.setItem(key, JSON.stringify(value));And it does not provide any type-specific operation. (e.g. increasing number value, push to array)
// increasing count
const count = JSON.parse(window.localStorage.getItem(key));
window.localStorage.setItem(key, JSON.stringify(count + 1));
// push to array
const arr = JSON.parse(window.localStorage.getItem(key));
window.localStorage.setItem(key, JSON.stringify([...arr, value]));So storage-typed resolves all things above.
const count = TypedStorageFactory.create("count", 0); // NumberTypedStorage
count.increase();
count.get(); // 1
const arr = TypedStorageFactory.create("array", ["foo"]); // ArrayTypedStorage
arr.pop(); // "foo"
arr.push("bar");
arr.get(); // ["bar"]
/* and any other types... */API References
TypedStorageFactory
Creates TypedStorage by type of passed initial value. Note test code.
TypedStorageFactory.create<T>(key, initialValue, options);- create:
(key, initialValue, options) => TypedStorage<T> | NumberTypedStorage | BooleanTypedStorage | ArrayTypedStorage<T[number]>- returns instanceof
TypedStorageby type of passed initial value - parameters
- key:
string- required
- unique key for value
- initialValue:
T- required
- any value which
TypedStoragewill be initialized with
- options:
TypedStorageOptions<T>- optional
- note TypedStorageOptions
- key:
- returns instanceof
TypedStorage
Provides JSON parsing/stringifying. Note test code.
const storage = new TypedStorage<T>(key, initialValue, options);
storage.get();
storage.set(value);constructor:
(key, initialValue, options) => TypedStorage<T>- returns instanceof
TypedStorageby type of passed initial value - parameters
- key:
string- required
- unique key for value
- initialValue:
T- required
- any value which
TypedStoragewill be initialized with
- options:
TypedStorageOptions<T>- optional
- note TypedStorageOptions
- key:
- returns instanceof
get:
() => T- returns current value
set:
(next) => void- sets current value to passed value
- parameters
- next:
T- required
- next value
- next:
TypedStorageOptions
interface TypedStorageOptions<T> {
storage?: Storage;
}- storage:
StorageStoragewhichTypedStoragewill use
NumberTypedStorage
Extends number-specific methods based on TypedStorage API. Note test code.
const storage = new NumberTypedStorage(key, initialValue, options);
storage.increase();
storage.decrease();constructor:
(key, initialValue, options) => TypedStorage<number>- returns instanceof
TypedStorageby type of passed initial value - parameters
- key:
string- required
- unique key for value
- initialValue:
number- required
- any value which
NumberTypedStoragewill be initialized with
- options:
TypedStorageOptions<number>- optional
- note TypedStorageOptions
- key:
- returns instanceof
increase:
() => void- adds 1 to current value
decrease:
() => void- subtracts 1 from current value
BooleanTypedStorage
Extends boolean-specific methods based on TypedStorage API. Note test code.
const storage = new BooleanTypedStorage(key, initialValue, options);
storage.toggle();
storage.true();
storage.false();constructor:
(key, initialValue, options) => TypedStorage<boolean>- returns instanceof
TypedStorageby type of passed initial value - parameters
- key:
string- required
- unique key for value
- initialValue:
boolean- required
- any value which
BooleanTypedStoragewill be initialized with
- options:
TypedStorageOptions<boolean>- optional
- note TypedStorageOptions
- key:
- returns instanceof
toggle:
() => void- reverses current value
true:
() => void- sets current value to true
false:
() => void- sets current value to false
ArrayTypedStorage
Extends number-specific methods based on TypedStorage API. Note test code.
const storage = new ArrayTypedStorage<T>(key, initialValue, options);
storage.push(value);
storage.pop();constructor:
(key, initialValue, options) => TypedStorage<T[]>- returns instanceof
TypedStorageby type of passed initial value - parameters
- key:
string- required
- unique key for value
- initialValue:
T[]- required
- any value which
NumberTypedStoragewill be initialized with
- options:
TypedStorageOptions<T[]>- optional
- note TypedStorageOptions
- key:
- returns instanceof
push:
(value: T) => void- appends value to the end of current array
pop:
() => T | null- removes last value of current array. if it is empty,
popreturns null.
- removes last value of current array. if it is empty,