Typescript, пишущий функцию, которая использует обновление Immutability Helper - PullRequest
0 голосов
/ 20 мая 2019

Я использую 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}));
}

Хотя я не могу заставить его работать. Как я могу это сделать?

...