typescript-actions
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

typescript-actions

Typescript actions/reducers based on classes

Installation

// NPM
npm install --save typescript-actions
 
// YARN
yarn add typescript-actions

Modify .tsconfig

{
    "compilerOptions": {
        ...
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        ...
    }
}

Add simple store

import {action, ActionBase, apiAction, nameof, PromiseOrVoid} from 'typescript-actions/dist';
 
export interface ICounterStore extends IStoreBase {
  result: number;
}
 
export const initialCounterStore: ICounterStore = {
  ...baseInitialStore,
  result: 0,
};

Action example

import {action, ActionBase, apiAction, nameof, PromiseOrVoid} from 'typescript-actions/dist';
 
export interface ICounterActions {
  increment(): void;
 
  decrement(): void;
}
 
export class CounterActions extends ActionBase implements ICounterActions {
  @action()
  public increment(): void {
    this.dispatch({
      name: this.actionName,
      payload: null
    });
  }
 
  @action()
  public decrement(): void {
    this.dispatch({
      name: this.actionName,
      payload: null
    });
  }
 
  public getStoreName(): string {
    return nameof<IGlobalStore>('counter') as string;
  }
}

Reducer example

import {ReducerBase} from 'typescript-actions/dist';
 
export class CounterReducer extends ReducerBase<ICounterStore> implements ICounterActions {
  public getStoreName() {
    return nameof<IGlobalStore>('counter');
  }
 
  @reducer()
  public increment(): void {
    this.setState({
      result: this.store.result + 1
    });
  }
 
  @reducer()
  public decrement(): void {
    this.setState({
      result: this.store.result - 1
    });
  }
}

Package Sidebar

Install

npm i typescript-actions

Weekly Downloads

30

Version

1.1.1

License

MIT

Unpacked Size

64.8 kB

Total Files

47

Last publish

Collaborators

  • mgerasika