Effect:
The Effect type encapsulates a unit of work that can be run in the outside world, and can feed
data back to the Store. It is the perfect place to do side effects, such as network requests,
saving/loading from disk, creating timers, interacting with dependencies, and more.
Reducer:
A reducer describes how to evolve the current state of an application to the next state, given
an action, and describes what Effects should be executed later by the store, if any.
Store:
A store represents the runtime that powers the application. It is the object that you will pass
around to views that need to interact with the application.
ActionSheetState:
A data type that describes the state of an action sheet that can be shown to the user. The
Action generic is the type of actions that can be sent from tapping on a button in the sheet.
AlertState:
A data type that describes the state of an alert that can be shown to the user. The Action
generic is the type of actions that can be sent from tapping on a button in the alert.
ViewStore:
A ViewStore is an object that can observe state changes and send actions. They are most
commonly used in views, such as SwiftUI views, UIView or UIViewController, but they can be
used anywhere it makes sense to observe state and send actions.