This module is intended to provide a typescript friendly shared storage on which developers can extend the storage easily via ExtendedSharedStorage
interface.
Simply install it via npm and require it directly.
npm install git@github.com:JCloudYu/share-storage.git
const storage = require('shared-storage');
If you want to provide additional type information on the storage, simply declare a ExtendedSharedStorage
interface and add types you want. For example...
// in ext.d.ts
declare global {
interface ExtendedSharedStorage {
version?:string;
code?:number;
}
interface ExtendedSharedStorage {
(identifier:'demo'): { message:string; };
(identifier:Object): { content:string; };
}
};
And you can refer to the version
and code
properties directly in your code!
// Direct access on shared object
const storage = require('shared-storage');
const code_num = storage.code;
storage.version = '0.1.0';
// Scopped contents
storage('demo').message = 'message';
// Volatile contents that are bound to an object
const obj1 = {};
storage(obj1).content = '123';
const obj2 = {};
storage(obj2).content = '456';
console.log( storage(obj1).content ); // will output 123
console.log( storage(obj2).content ); // will output 456