【发布时间】:2017-08-28 07:03:03
【问题描述】:
在 typescript、react 和 redux 中,mapStateToProps 函数 connect 方法的 state 参数声明为 any。
interface MapStateToProps<TStateProps, TOwnProps> {
(state: any, ownProps: TOwnProps): TStateProps;
}
我想使用我在代码中定义的类型来代替状态参数的任何类型。我怎样才能做到这一点?
const mapStateToProps = (state: MyStateInterface) => {};
但这不起作用,因为它与签名不匹配。
只有我这样说才有效:
const mapStateToProps = (state: any) => {};
但后来我失去了我的 IDE 自动完成功能并在我的函数中进行类型检查。
事实上,这更像是一个打字稿问题,而不是一个 redux 问题。
当一个函数类型有一个带有any参数的参数时,使用时如何指定参数的实际类型?
【问题讨论】:
-
不应该是
const mapStateToProps: MyStateInterface = (state) =>吗?您正在尝试将函数值分配给不正确的状态参数。如果您想将该类型分配给 state 参数,您可以定义一个具有减速器返回值的状态接口 -
其实我需要输入函数的
state参数。MyStateInterface是一个在应用程序中描述我的商店的接口(它可以命名为StoreInterface,我在这里这样命名它以匹配 redux 接口声明) -
不太清楚你的意思?如果您有一个
combineReducers的索引,您可以为该组合减速器定义一个类型/接口,这就是状态值。让我写一个答案来帮助解释
标签: reactjs typescript redux react-redux