import React, { ChangeEvent } from "react"; import { connect } from "react-redux"; import * as Actions from "../actionCreators"; import { Dispatch, AppState } from "../types"; import * as Selectors from "../selectors"; interface Props { id?: string; balance: number; showMarquee(): void; hideMarquee(): void; setBalance(e: ChangeEvent): void; style?: React.CSSProperties; className?: string; } const Balance = (props: Props) => ( ); const mapStateToProps = (state: AppState) => ({ balance: Selectors.getBalance(state), }); const mapDispatchToProps = (dispatch: Dispatch) => ({ setBalance: (e: ChangeEvent) => dispatch(Actions.setBalance(Number((e.target as HTMLInputElement).value))), showMarquee: () => dispatch(Actions.setFocus("balance")), hideMarquee: () => dispatch(Actions.unsetFocus()), }); export default connect(mapStateToProps, mapDispatchToProps)(Balance);