Skip to content

Incorrect type inference with currying #831

@sarmong

Description

@sarmong

🐛 Bug Report

When using currying, produce doesn't return the original type

Link 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:

const updatedCache2: (oldAssignments: Assignment[]) => <Base extends readonly {
    readonly assignmentBk: string;
    readonly contentBk: string;
    readonly createdDate: Date;
    readonly startDate: Date;
    readonly dueDate: Date;
    readonly done: boolean;
}[]>(base?: Base) => Base

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.

  • Immer version: 8.0.1
  • I filed this report against the latest version of Immer
  • Occurs with setUseProxies(true)
  • Occurs with setUseProxies(false) (ES5 only)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions