Serializing and Deserializing Actions

Showcase how to implement a pattern for serializing and deserializing actions to ensure that they can be safely transmitted over the network or stored.
class Action { 
    constructor(type, payload) {
        this.type = type;
        this.payload = payload;
    // Serialize the action into a JSON string
    serialize() {
        return JSON.stringify({ type: this.type, payload: this.payload });
    // Deserialize the JSON string back into an action
    static deserialize(serializedAction) {
        const { type, payload } = JSON.parse(serializedAction);
        return new Action(type, payload);

// Example usage:
// Serialize an action
const action = new Action('ADD_TODO', { text: 'Learn serialization' });
const serializedAction = action.serialize();

// Deserialize the action
const deserializedAction = Action.deserialize(serializedAction);
This example defines an Action class with a constructor to hold type and payload, a serialize method to convert the action into a JSON string, and a static deserialize method to convert the JSON string back into an Action object. An action is created, serialized, and then deserialized as an example usage.