Skip to content

Possible type inference failure #44218

@FUDCo

Description

@FUDCo

Bug Report

🔎 Search Terms

typescript type inference failures

🕗 Version & Regression Information

First encountered in tsc 3.9.7, just verified in the playground with v4.2.3

  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about everything (I read the whole FAQ and didn't find anything that seemed to match the kind of thing I'm talking about here)

⏯ Playground Link

Here

💻 Code

const fooMap = new Map<string, string>();

function example(key: string, value: string): () => string {
  let s = fooMap.get(key);
  if (s === undefined) {
    s = value;
  }
  const t = s;
  return () => s; // replace s with t here to make the error go away
}

🙁 Actual behavior

On the final line of the sample (the return statement), TS complains:

Type 'string | undefined' is not assignable to type 'string'.
  Type 'undefined' is not assignable to type 'string'.

even though at the location in question s is certain to be of type string.
If you replace s with t, defined on the line immediately above the return statement, the error goes away.

🙂 Expected behavior

tsc should not whine about a type error on that return statement.

Metadata

Metadata

Assignees

No one assigned

    Labels

    DuplicateAn existing issue was already created

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions