Единственное, что меня раздражает в Redux, это то, сколько работы требуется для создания нового действия.В JS я создал цикл, который превращает всех создателей моих действий для меня в объект, полный строк типа:
export function buildActionCreators(types) {
const creators = {};
Object.values(types).forEach(type => {
creators[camelCase(type)] = payload => ({ type, payload });
});
return creators;
}
Я перехожу на Typescript и мне нравится, как я могу печатать полезную нагрузку - таким образомизбегая очень распространенной ошибки отправки слишком малой информации редуктору Redux.
Я надеялся, что дженерики позволят мне напечатать мои полезные данные в моей функции buildActionCreators
, но TS не позволяет передавать типы в качестве значений,что, кажется, означает, что это невозможно без какого-либо генератора кода.
Вот некоторый псевдокод того, что я хотел бы сделать:
export function buildActionCreators(typesMap): ActionCreatorsMap {
const creators: ActionCreatorsMap = {};
Object.keys(typesMap).forEach(StringType: string => {
const PayloadType = typesMap[StringType];
creators[camelCase(stringType)] = (payload: PayloadType) => ({
type: StringType,
payload
});
});
return creators;
};
Я все еще новичок вТС, так что, может быть, есть выход, чтобы сделать то, что я ищу?Спасибо за любую помощь!