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
- 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
💻 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.