В настоящее время я экспортирую 2 создателей действий:
export const login = (payload: $PropertyType<Actions.Login, 'payload'>): Actions.Login => ({
type: LOGIN,
payload,
})
export const logout = (payload: $PropertyType<Actions.Logout, 'payload'>): Actions.Logout => ({
type: LOGOUT,
payload,
})
Это их соответствующие действия:
export type Login = {
type: ActionType,
payload: {
username: string,
password: string,
},
}
export type Logout = {
type: ActionType,
payload: null,
}
В другом файле я импортирую создателей с использованием синтаксиса с подстановочными знаками
import * as Actions from ...
Затем я пытаюсь извлечь из этих действий форму их возвращаемого типа для использования в качестве типа действия для моих редукторов.
Я пытаюсь получить следующее(Я думаю, поскольку я предполагаю, что именно это Flow ожидает удовлетворить требованиям редукторов - свойство type
):
type Action = {
login: { type: '', payload: '' },
logout: { type: '', payload: '' }
}
Я достиг этой функции:
type Action = $ObjMap<typeof Actions, <V>(V) => $Call<V>>
Что возвращает следующее:
Action: type Action = {
login: Login,
logout: Logout
}
Что действительно является действиями, возвращенными этими создателями.Однако поток внутри редуктора не обнаруживает свойство type
в этом действии.
Редуктор выглядит следующим образом:
const reducer = (state: State = initialState, action: Action): State => {
switch (action.type) {
case LOGIN:
return { ...state }
default:
return state
}
}
С ошибкой в action.type
, равной:
[flow] property `type` is missing in object type [1]. (References: [1])
Любая помощь в написании лучшей, обобщенной функции очень ценится.Спасибо.