LogoLogo
  • Introduction
  • Intro
    • 🚀Getting Started
    • Key Characteristics
    • Fundamentals
    • Motivation
  • Fundamentals
    • 💾Units
      • BoolUnit
      • NumUnit
      • StringUnit
      • DictUnit
      • ListUnit
      • GenericUnit
    • 🤝Systems
      • AsyncSystem
      • Custom AsyncSystem
    • 🤜Action
    • 📦Cluster
  • 🔨Utilities
    • Stream
    • Selection
  • Integrations
    • Angular
    • React
      • useObservable Hook
      • useUnit Hook
  • 📖Guides
    • Configuration
    • Nesting
    • Events
    • Typings
    • Caching
    • Persistence
    • Immutability
    • Freeze and Mute
    • Development Environment
    • General Guidelines
  • More
    • 👀Examples
    • ✍️Articles
Powered by GitBook
On this page

Was this helpful?

  1. Fundamentals
  2. Units

GenericUnit

PreviousListUnitNextSystems

Last updated 4 years ago

Was this helpful?

GenericUnit is a type of that doesn't pertain to any specific data type, it's generic, as the name suggests. You can use it to store any serializable value data type that other Units accept. i.e.: boolean, number, string, simple object and array.

The advantage of using GenericUnit over other Units is that you can store and dispatch any type of value and the disadvantage is that you lose the specialized methods and features built into other Units for a specific data structure, for example, we can store an array value in a GenericUnit, but we cannot use methods like push or set to add items to the value without a manual dispatch. Also, we lose the assurance that the value would always be of a specific data type, i.e.: an array in case of ListUnit.

GenericUnit implements non-proto methods like toString to make working with the stored value a bit easier, when you call these methods they are called on the stored value instead of GenericUnit instance.

It also borrows some static methods from like values and entries, and implements them as instance members objectValues and objectEntries, respectively. These methods do not throw an error on undefined or null value, they would simply return an empty array instead.

See for more details.

Default value

undefined

Supported data types

boolean, number, string, serializable object, array

// initialization
const unit = new GenericUnit({initialValue: ['🐠']}); // value is ['🐠']

typeof unit === 'object' // true
unit instanceof Array // false
unit.value() instanceof Array // true

// adding an item to the stored array value
unit.dispatch(arrValue => [...arrValue, '🐞'])
// this is inefficient compared to ListUnit.push, but it works

// dispatching a different type of value
unit.dispatch('not an array') // works

// dispatching a different type of value
unit.dispatch(true) // works
💾
Unit
Object.prototype
Object
API reference