Redux 使用flowtype的最佳实践重做操作?

Redux 使用flowtype的最佳实践重做操作?,redux,flowtype,Redux,Flowtype,我想用flowtype编写redux,但我对如何做到这一点有疑问 流式重排 type动作类型= |“A” |“B” ; //符合通量标准作用的通用类型 键入Action以确保Redux操作的结构 类型Action声明了我们将在应用程序中使用的所有操作的具体类型 问题1:如何确保传递给ActionT的第一个类型是ActionType类型(或者至少应该是string类型)? 例如,不允许在中添加新类型'C',因为ActionType只接受'a'和'B' type动作类型= |“A” |“B” ;

我想用flowtype编写redux,但我对如何做到这一点有疑问

流式重排
type动作类型=
|“A”
|“B”
;
//符合通量标准作用的通用类型
键入Action以确保Redux操作的结构
  • 类型
    Action
    声明了我们将在应用程序中使用的所有操作的具体类型
  • 问题1:如何确保传递给
    ActionT
    的第一个类型是
    ActionType
    类型(或者至少应该是
    string
    类型)? 例如,不允许在中添加新类型
    'C'
    ,因为
    ActionType
    只接受
    'a'
    'B'

    type动作类型=
    |“A”
    |“B”
    ;
    类型动作=
    |行动
    |行动
    |ActionT//应引发错误
    ;
    
    这有意义吗

    问题2:如何使用flowtype和Immutable.js编写减缩器(和
    thunk
    )? 我已经编写了一个buildReducer来绑定到初始状态

    类型动作=
    |行动
    ;
    const buildReducer=(初始状态,reducerMap)=>
    (状态=初始状态,动作)=>{
    const reducer=reducemap[action.type];
    返回(减速器)?减速器(状态、动作):状态;
    };
    const initialState=Immutable.fromJS({
    选定国家/地区:“美国”
    })
    常数减缩器={
    [“选择国家]:(国家、行动)=>{
    //如何知道有效负载的类型是字符串类型?
    //如何确保'state.set(…)`为键获取正确的值类型?
    返回state.set('selectedCountry',action.payload)
    }
    }
    const appReducer=buildReducer(初始状态,reducer)
    
    我如何检查
    减速器中的
    有效载荷
    类型,以确定动作类型
    使用flowtype选择\u COUNTRY


    如何使用flowtype check将有效负载值应用于
    不可变
    状态?

    要回答问题1,可以使用有界多态性

    // A generic type conforming to Flux Standard Action
    type ActionT<A: ActionType, P> = {|
      type: A,
      payload?: P | Error,
      error?: boolean,
      meta?: mixed
    |};
    
    //符合Flux标准动作的通用类型
    键入ActionT,然后键入减速器函数