【发布时间】:2019-12-26 14:16:12
【问题描述】:
我正在使用带有 typesafe-actions 的 typescript。 我的代码库有很多重复的代码,如下所示: 我查看了类似的问题,但找不到答案。
如何减少样板。
import { action, ActionType, createAction } from 'typesafe-actions';
interface ModelA {
stuff: string
}
export enum FeatureAActionTypes {
Load = '[FeatureA] Load',
Success = '[FeatureA] Success',
Fail = '[FeatureA] Fail',
Reset = '[FeatureA] Reset'
}
export const FeatureAActions = {
load: createAction(FeatureAActionTypes.Load),
success: (response: ModelA[]) => action(FeatureAActionTypes.Success, response),
fail: (error: string) => action(FeatureAActionTypes.Fail, error),
reset: createAction(FeatureAActionTypes.Reset)
};
export type FeatureAAction = ActionType<typeof FeatureAActions>;
interface ModelB {
differentStuff: string
}
export enum FeatureBActionTypes {
Load = '[FeatureB] Load',
Success = '[FeatureB] Success',
Fail = '[FeatureB] Fail',
Reset = '[FeatureB] Reset'
}
export const FeatureBActions = {
load: createAction(FeatureBActionTypes.Load),
success: (response: ModelB[]) => action(FeatureBActionTypes.Success, response),
fail: (error: string) => action(FeatureBActionTypes.Fail, error),
reset: createAction(FeatureBActionTypes.Reset)
};
export type FeatureBAction = ActionType<typeof FeatureBActions>;
【问题讨论】:
-
操作是否异步处理(例如,通过调用服务器,可能由 thunk 或 saga 处理)?因为如果是这样,您可能会查看
createAsyncActionhttps://github.com/piotrwitek/typesafe-actions#createasyncaction。
标签: typescript redux typesafe-actions