2017-06-23 12 views
3

私はReduxの店を持って、それを接続したいです。ここに私のコンテナコンポーネントからの抜粋:正しい型宣言(活字体2)

interface IProps { 
    states: IAppState; 
    actions: IAppProps; 
} 
// mapping state to the props 
const mapStateToProps = (state: IAppState, ownProps = {}) => ({ 
    states: state 
}); 
// mapping actions to the props 
const mapDispatchToProps = (dispatch: Redux.Dispatch<IAppState>) => ({ 
    actions: Redux.bindActionCreators(actions, dispatch) 
}); 

// connect store to App 
@connect<IAppState, IAppProps, any>(
    mapStateToProps, 
    mapDispatchToProps 
) 
export default class App extends React.Component<IProps, {}> { 
//... 
} 

私は次の問題受け取るコンパイル:私は反応し-ReduxのをMapStateToPropsインターフェイスを公開4.4.44 @ /タイプ@使用してい

error TS2345: Argument of type '(state: IAppState, ownProps?: {}) => { states: IAppState; }' is not assignable to parameter of type 'MapStateToPropsParam<IAppState, any>'. 
    Type '(state: IAppState, ownProps?: {}) => { states: IAppState; }' is not assignable to type 'MapStateToPropsFactory<IAppState, any>'. 
    Type '{ states: IAppState; }' is not assignable to type 'MapStateToProps<IAppState, any>'. 
     Type '{ states: IAppState; }' provides no match for the signature '(state: any, ownProps?: any): IAppState'. 

を。私はmapStateToPropsがこのインタフェースに直面していると思います...しかし何かが間違っています。それは何ですか?

答えて

1

はまあ、そうです。代わりに、私は状態ツリーcombineReducers({ states: myReducer })を変更しました。したがって、このコードは正常に動作します:概念について

interface IRootState { 
    state: IAppState; 
} 

const mapStateToProps = (state: IRootState) => state; 

const mapDispatchToProps = { 
    toggleOpenAddFeed 
}; 

type IProps = IRootState & typeof mapDispatchToProps; 

class App extends React.Component<IProps, {}> { 
render() { 
    return (
     <div className="main-wrapper"> 
     <Mycomponent store={this.props} /> 
     </div> 
    ); 
    } 
} 

export default connect(mapStateToProps, mapDispatchToProps)(App); 
0

ownPropsは、任意の型を持っていません。あなたはそれにタイプを与えなければなりません。 @types/react-reduxがでました。私は{ states: AppStateTree }のようなマッピング中に小道具のためにそれを修正することを望んでいたとまったく同じ型を返すようにmapStateToPropsを受け入れるよう

const mapStateToProps = (state: IAppState, ownProps: any = {}) 
+0

おかげで、まだそれは私の問題:(奇妙だ –

+0

オムが解決しない例外を見てみると、それは 'あなたがどう定義するか気に入らないこと活字体のように見えますそれを見てみましょう... – Ematipico

関連する問題