Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Control Flow Analysis for Dependent Parameters doesn't work when the parameters are genericΒ #48345

Copy link
Copy link
@DetachHead

Description

@DetachHead
Issue body actions

Bug Report

πŸ”Ž Search Terms

Control Flow Analysis for Dependent Parameters generic

πŸ•— Version & Regression Information

v4.7.0-dev.20220302

⏯ Playground Link

Playground link with relevant code

πŸ’» Code

type Func = <T extends ["a", number] | ["b", string]>(...args: T) => void;

const f1: Func = (kind, payload) => {
    if (kind === "a") {
        payload.toFixed();  // error
    }
    if (kind === "b") {
        payload.toUpperCase();  // error
    }
};

πŸ™ Actual behavior

parameter type not narrowed

πŸ™‚ Expected behavior

parameter type is narrowed, like in the example from the typescript 4.6 blog post

type Func = (...args: ["a", number] | ["b", string]) => void;

const f1: Func = (kind, payload) => {
    if (kind === "a") {
        payload.toFixed();  // 'payload' narrowed to 'number'
    }
    if (kind === "b") {
        payload.toUpperCase();  // 'payload' narrowed to 'string'
    }
};

f1("a", 42);
f1("b", "hello");
Reactions are currently unavailable

Metadata

Metadata

Assignees

Labels

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

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

    Morty Proxy This is a proxified and sanitized view of the page, visit original site.