Я использую immutability-helper
с Redux для обновления состояния в моем приложении React Native:
(state: Spec<UserState>, { payload }: { payload: {x: any} }) =>
update(state, { x: data:{ $set: x }, meta: { loading: { $set:false } } })
Это работает, но я использую аналогичный шаблон (возьмите определенный ключ полезной нагрузки, обновите state.thatKey.data
объектом, обновите state.thatKey.meta.loading
до false
. Я хочу инкапсулировать этот вызов самым простым способом, который возможен, поэтому что я могу назвать это следующим образом: myMethod({$set: x})
и изнутри он возвратит HOF, который вызывает update
Неизменяемости, который принимает состояние, извлекает x
из полезной нагрузки (которая предоставляется внешним образом в редукторе вызовов API) и устанавливает data
и meta
из state.x
, как я показал выше, все строго типизировано (поэтому нет any
s).
Я твердо верю , что это возможно, но я новичок как в неизменяемости, так и в Typescript, и у меня возникают проблемы при написании такой функции.
Я пробовал много вещей, пытаясь проверить подпись update
, и мой ближайший звонок был:
function myMethod<T>(target:Spec<T>){
return (state:T, { payload }: { payload:T }) =>
update(state, Object.assign(target, {$set: payload}));
}
Хотя я не могу заставить его работать. Как я могу это сделать?