message: clean up types from framebufList
diff: import { Reducer, Action, AnyAction } from 'redux'
  import undoable, { StateWithHistory } from 'redux-undo'
  import { Framebuffer } from '../redux/editor'
  -import { Framebuf, FbAction } from '../redux/types'
  +import {
  + ActionsUnion,
  + createAction,
  + Framebuf, FbAction
  +} from './types'
  import * as fp from '../utils/fp'
  -export const ADD_FRAMEBUF = 'ADD_FRAMEBUF'
  -export const REMOVE_FRAMEBUF = 'REMOVE_FRAMEBUF'
  +const ADD_FRAMEBUF = 'ADD_FRAMEBUF'
  +const REMOVE_FRAMEBUF = 'REMOVE_FRAMEBUF'
  -interface FbListAddAction extends Action {
  - type: 'ADD_FRAMEBUF';
  - index: number;
  -}
  +const actionCreators = {
  + addFramebuf: () => createAction(ADD_FRAMEBUF),
  + removeFramebuf: (index: number) => createAction(REMOVE_FRAMEBUF, index)
  +};
  -interface FbListRemoveAction extends Action {
  - type: 'REMOVE_FRAMEBUF';
  - index: number;
  -}
  +type Actions = ActionsUnion<typeof actionCreators>
  -type FbListActionTypes = FbListRemoveAction | FbListAddAction;
  +export const actions = actionCreators;
  type UndoableFramebuf = StateWithHistory<Framebuf>;
  -function framebufListReducer(reducer: Reducer<UndoableFramebuf, FbAction<any> | FbListAddAction>): (state: UndoableFramebuf[], action: FbListActionTypes) => UndoableFramebuf[] {
  - return function (state: UndoableFramebuf[] = [], action: FbListActionTypes): UndoableFramebuf[] {
  +function framebufListReducer(reducer: Reducer<UndoableFramebuf, FbAction<any>>): (state: UndoableFramebuf[], action: Actions) => UndoableFramebuf[] {
  + return function (state: UndoableFramebuf[] = [], action: Actions): UndoableFramebuf[] {
  switch (action.type) {
  case ADD_FRAMEBUF:
  - return state.concat(reducer(undefined, action));
  + const dummyAction = action as FbAction<any>;
  + return state.concat(reducer(undefined, dummyAction));
  case REMOVE_FRAMEBUF: {
  - const { index } = action as FbListRemoveAction;
  - return fp.arrayRemoveAt(state, index);
  + return fp.arrayRemoveAt(state, action.data);
  }
  default:
  const { framebufIndex } = action as FbAction<any>;
  @@ -48,20 +49,6 @@ function framebufListReducer(reducer: Reducer<UndoableFramebuf, FbAction<any> |
  }
  }
  -export const actions = {
  - addFramebuf: () => {
  - return {
  - type: ADD_FRAMEBUF
  - } as FbListAddAction;
  - },
  - removeFramebuf: (index: number) => {
  - return {
  - type: REMOVE_FRAMEBUF,
  - index
  - } as FbListRemoveAction;
  - }
  -}
  -
  const groupByUndoId = (action: Action<any>) => {
  const tmpAction = action as FbAction<any>;
  if (tmpAction.undoId !== undefined) {
  