Open sarmong opened 3 years ago
For the function updateCache2
, arguments will be narrow to Immutable<Assignment[]>
. If we don't want this, we can specify the generic state. However, type of function updatedCache3
is (state: Assignment[] | undefined) => Assignment[]
.Maybe this '?' can be removed?
<State>(
recipe: (
state: Draft<State>,
initialState: State
) => ValidRecipeReturnType<State>
): (state?: State) => State
it seems like this function
const updatedCache3 = produce<Assignment[]>((draft) => {
const updatedAssignment = draft.find(
({contentBk}) => contentBk === assignment.contentBk
)
if (updatedAssignment) {
updatedAssignment.done = !updatedAssignment.done
}
})
will map to
<State>(recipe: (state: Draft<State>, initialState: State) => ValidRecipeReturnType<State>): (state?: State) => State;
not map to
<State>(recipe: (state: Draft<State>) => ValidRecipeReturnType<State>): (state: State) => State;
🐛 Bug Report
When using currying,
produce
doesn't return the original typeLink to repro
https://codesandbox.io/s/immer-sandbox-forked-342jd?file=/src/index.ts
To Reproduce
Use
produce
function without data and check the return type.Observed behavior
Curried
produce
returns:Expected behavior
Curried
produce
returns the original type.I need it, because it fails when using with Ramda's
pipe
function.Environment
We only accept bug reports against the latest Immer version.
setUseProxies(true)
setUseProxies(false)
(ES5 only)