import { Action as ReduxAction } from '../..' ; namespace FSA { interface Action < P > extends ReduxAction { payload : P ; } const action = { type : 'ACTION_TYPE' , payload : 'test' } ; const payload = action . payload ; } namespace FreeShapeAction { interface Action extends ReduxAction { [ key ] : any ; } const action = { type : 'ACTION_TYPE' , text : 'test' } ; const text = action [ 'text' ] ; } namespace StringLiteralTypeAction { type ActionType = 'A' | 'B' | 'C' ; interface Action extends ReduxAction { type : ActionType ; } const action = { type : 'A' } ; const type = action . type ; } namespace EnumTypeAction { enum ActionType { A , B , C } interface Action extends ReduxAction { type : ActionType ; } const action = { type : ActionType . A } ; const type = action . type ; }