Possible type inference failure · Issue #44218 · microsoft/TypeScript (original) (raw)

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

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.