Function: createStore()
Call Signature
createStore<
Context,Key,Value,CacheDisabled>(options,context):IStore<Key,Value,CacheDisabled> &ContextReturn<Context>
Defined in: store/src/createStore.ts:147
Factory function to create a Store instance with optional business logic augmented into the store instance.
This function provides a convenient way to instantiate a store and attach supplemental logic (context) to it. It supports full type inference for both the store's data and the attached context.
Type Parameters
Context
Context extends object | ((store) => object)
The type of the context object or factory function.
Key
Key
The type of keys stored in the map.
Value
Value
The type of values stored in the map.
CacheDisabled
CacheDisabled extends boolean
Whether store data caching is disabled.
Parameters
options
Store_Options<Key, Value, CacheDisabled> | null | undefined
(optional) Configuration options for the store.
context
Context & ContextValidate<Context, IStore<Key, Value, CacheDisabled>>
(optional) A plain object or a factory function that returns an object. If function provided, it is executed only once during instantiation.
Purpose: Use context to encapsulate domain-specific business logic, helper methods, or non-reactive state directly into the store instance.
Behavior:
- Non-Reactive: Updates to context properties do not trigger
onChangeor RxJS emissions. - Non-Persistent: Context data is purely in-memory and is not saved to persistent storage.
- Access to Store: When a factory function is used, it receives the store instance as an argument.
- Notes:
- Built-in store properties are not allowed
- Augmented methods' "thisArg" will be the context as per default JavaScript behavior.
- Custom class instances are supported as context. Built-in Store properties take precedence in the event of a naming conflict.
Returns
IStore<Key, Value, CacheDisabled> & ContextReturn<Context>
A Store instance with augmented properties (if any).
Examples
Basic usage
import { createStore } from '@superutils/store'
const store = createStore({ initialValue: new Map([['count', 0]])})
store.set('count', 1)
store.set('count', prevCount => prevCount + 1)
console.log(store.get('count')) // 2Store augmented with custom business logic
import { createStore } from '@superutils/store'
const store = createStore({ name: 'user-settings'}, {
count: 0,
log(msg) {
console.log(`[${++this.count}] ${msg}`)
}
})
store.log('Settings updated')
console.log(store.count)In-memory store
import fetch from '@superutils/fetch'
import { createStore } from '@superutils/store'
// Bypass the name property to create an in-memory store
const store = createStore()
// This will NOT save the data to localStorage
store.set('key', 'value')Store with a functional context
import { createStore } from '@superutils/store'
const authStore = createStore(null, store => ({
isAuthenticated: () => store.has('token'),
logout: () => {
store.delete('token')
console.log('logged out')
}
}))
if (authStore.isAuthenticated()) {
authStore.logout()
}Augmenting with a custom class instance
import { createStore } from '@superutils/store'
class MyCustomClass {
private _count = 0
get count() {
return this._count
}
increment = () => this._count++
decrement() {
return --this._count
}
}
const store = createStore(null, new MyCustomClass())
console.log(
store.count, // 0
store.increment(),// function
store.count, // 1
store.decrement(), // undefined
)Call Signature
createStore<
Key,Value,CacheDisabled>(options?):IStore<Key,Value,CacheDisabled>
Defined in: store/src/createStore.ts:161
Factory function to create a Store instance with optional business logic augmented into the store instance.
This function provides a convenient way to instantiate a store and attach supplemental logic (context) to it. It supports full type inference for both the store's data and the attached context.
Type Parameters
Key
Key
The type of keys stored in the map.
Value
Value
The type of values stored in the map.
CacheDisabled
CacheDisabled extends boolean = false
Whether store data caching is disabled.
Parameters
options?
Store_Options<Key, Value, CacheDisabled>
(optional) Configuration options for the store.
Returns
IStore<Key, Value, CacheDisabled>
A Store instance with augmented properties (if any).
Examples
Basic usage
import { createStore } from '@superutils/store'
const store = createStore({ initialValue: new Map([['count', 0]])})
store.set('count', 1)
store.set('count', prevCount => prevCount + 1)
console.log(store.get('count')) // 2Store augmented with custom business logic
import { createStore } from '@superutils/store'
const store = createStore({ name: 'user-settings'}, {
count: 0,
log(msg) {
console.log(`[${++this.count}] ${msg}`)
}
})
store.log('Settings updated')
console.log(store.count)In-memory store
import fetch from '@superutils/fetch'
import { createStore } from '@superutils/store'
// Bypass the name property to create an in-memory store
const store = createStore()
// This will NOT save the data to localStorage
store.set('key', 'value')Store with a functional context
import { createStore } from '@superutils/store'
const authStore = createStore(null, store => ({
isAuthenticated: () => store.has('token'),
logout: () => {
store.delete('token')
console.log('logged out')
}
}))
if (authStore.isAuthenticated()) {
authStore.logout()
}Augmenting with a custom class instance
import { createStore } from '@superutils/store'
class MyCustomClass {
private _count = 0
get count() {
return this._count
}
increment = () => this._count++
decrement() {
return --this._count
}
}
const store = createStore(null, new MyCustomClass())
console.log(
store.count, // 0
store.increment(),// function
store.count, // 1
store.decrement(), // undefined
)