Skip to content

typescript generic break filter after spreading object in map #40995

@dartess

Description

@dartess

TypeScript Version: any, including 4.0.2 and v4.1.0-dev.20201008

Search Terms: typescript generic break filter after spreading object in map? O_o

Code

interface Success {
    isSuccess: true;
}

interface Fail {
    isSuccess: false;
}

type Item =
    | Success
    | Fail

// ok
function foo(a: Array<Item>): void {
    a
        .map((item) => ({...item}))
        .filter((value) => {
            console.log(value);
        });
}

// error
function bar<T extends any>(a: Array<Item>): void {
    a
        .map((item) => ({...item}))
        .filter((value) => {
            console.log(value);
        });
}

Expected behavior:

adding generic to function does not break the code

Actual behavior:

.filter((value) => { after .map((item) => ({...item})) when it inside function with generic trigger error.

Playground Link: https://www.typescriptlang.org/play?ts=4.0.2#code/JYOwLgpgTgZghgYwgAgMoFcFIM7eQbwChkTlhsMsJcAuZMKdCAbkIF9DDRJZEUAxOMAA2BYqXKUc2OvGHYW7TmACeABxQBJSAFtkAXnEkAPmkzSjyU4JGcA9HeQB7ANaEY6EAjDAnIZDBOTgAUcHQAglBQcCoAPNoQOgB8AJR0AG5OwAAmYqTIcJb5AHQ6cGrBwcC6KQZJyMH4xc3ViWwpKUWkxTAiPJXpcMJMtfr1RPmTpAh+2E7CEMXCTgDmwYPDECnMyA7IG0x0CTpdJO2sHIR70FBOUO6e3r7+AEZwULEAKsgQAB6QIGyeDgIBUSVCESiMXiulSGSyuQmpEKUxIpXKlVaOlG9UazWKWPanVRyB6fWgAyGIzqeRJ01m80WyzWBy2Oz2AH4OadkOclEA

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptFix AvailableA PR has been opened for this issue

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions