使用Typescript 3.2.2和typesafe-actions 3.0.0时出现问题。我在下面创建了一个显示问题的示例。
基本上在我的化简器中,payload
没有在action
上定义,因为我的某些动作是EmptyAction
类型的,它没有定义payload
属性。如果将它们更改为具有空的有效负载({}
),则将为所有操作定义payload
,但是现在payload
的类型尚未基于{{1} }(在减速器中)。
我相信我正确地遵循了Mighty Tutorial。
工作示例:https://github.com/JoshMcCullough/react-ts-test
action-types.ts
type
actions.ts
export default {
GET_PROFILES_REQUEST: "GET_PROFILES_REQUEST",
GET_PROFILES_SUCCESS: "GET_PROFILES_SUCCESS",
GET_PROFILES_FAILURE: "GET_PROFILES_FAILURE",
};
reducer.ts
import { action } from "typesafe-actions";
import { ApiErrorResponse } from "../../app/api/ApiErrorResponse";
import { Profile } from "../../app/models/Profile";
import ActionTypes from './action-types';
export const getProfilesRequest = () => action(ActionTypes.GET_PROFILES_REQUEST); // EmptyAction<string>
export const getProfilesSuccess = (profiles: Profile[]) => action(ActionTypes.GET_PROFILES_SUCCESS, { profiles }); // Action<string, { profiles: Profile[] }>
export const getProfilesFailure = (error: ApiErrorResponse) => action(ActionTypes.GET_PROFILES_FAILURE, { error }); // Action<string, { error: ApiErrorResponse }>
答案 0 :(得分:0)
原来我的动作类型未定义为const
!我已经忽略了它,因为我正在升级现有的代码库。
解决方案是确保它们为const
:
action-types.ts
export const GET_PROFILES_REQUEST = "GET_PROFILES_REQUEST";
export const GET_PROFILES_SUCCESS = "GET_PROFILES_SUCCESS";
export const GET_PROFILES_FAILURE = "GET_PROFILES_FAILURE";