使用流进行类型检查

问题描述 投票:0回答:1

我有疑问。我写了一个Flow类型检查器来检查我的reducer。您可以向我解释一个错误是什么原因造成的。这是我的代码。

// @flow
import {SET_USER} from "./action-types";
import type {SetUserAction} from "./user-actions"; // export type SetUserAction = (user: User) => Action;
export type State = {
    +username: ?string,
    +firstName: ?string,
    +lastName: ?string,
    +email: ?string,
    avatar?: ?string,
}

export type Action = SetUserAction;

const initialState: State = {
    username: null,
    firstName: null,
    lastName: null,
    email: null,
    avatar: null,
};

type Reducer = (state: State, action: Action) => State;

const userReducer:Reducer = (state = initialState, action) => {
    switch (action.type) {
        case SET_USER:
            return {...action.payload};
        default:
            // (action: empty);
            return state;
    }
};

export {userReducer};

这是错误。

错误--------------------------------------------- -------------------------------- src / redux / User / user-actions.js:25:48无法将功能分配给setUser,因为缺少说明预期参数/返回类型的调用签名在对象文字[1]中,但在返回值中的SetUserAction [2]中存在。src / redux / User / user-actions.js:25:4825 | export const setUser:SetUserAction = user =>({类型:SET_USER,有效载荷:用户});^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [1]参考文献:src / redux / User / user-actions.js:24:4524 |导出类型SetUserAction =(用户:User)=>操作;^^^^^^ [2]错误------------------------------------------------- ---------------------------- src / redux / User / user-reducer.js:26:20无法获得action.type,因为函数类型[1]的静态属性中缺少属性type。src / redux / User / user-reducer.js:26:2026 |开关(action.type){^^^^参考文献:src / redux / User / user-reducer.js:23:3923 |类型Reducer =(状态:状态,操作:操作)=>状态;^^^^^^ [1]错误------------------------------------------------- ---------------------------- src / redux / User / user-reducer.js:26:13函数类型[1]的静态变量中缺少属性type。src / redux / User / user-reducer.js:26:1326 |开关(action.type){^^^^^^^^^^^^参考文献:src / redux / User / user-reducer.js:23:3923 |类型Reducer =(状态:状态,操作:操作)=>状态;^^^^^^ [1]错误------------------------------------------------- ---------------------------- src / redux / User / user-reducer.js:28:31无法获得action.payload,因为函数类型[1]的静态属性中缺少属性payload。src / redux / User / user-reducer.js:28:3128 |返回{... action.payload};^^^^^^^^参考文献:src / redux / User / user-reducer.js:23:3923 |类型Reducer =(状态:状态,操作:操作)=>状态;^^^^^^ [1]

reactjs redux flowtype
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.