Closed
Description
TypeScript Version:
nightly (1.9.0-dev.20160429)
Code
let maybeNumber: number | undefined;
(function () {
maybeNumber = 1;
})();
if (maybeNumber !== undefined) {
maybeNumber++;
}
Expected behavior:
Everything works without errors, maybeNumber
preserves type of number | undefined
and refines to number
in the if
block.
let maybeNumber: number | undefined;
// Control flow figured that: maybeNumber === undefined
(function () {
maybeNumber = 1;
})(); // --> oops, unknown side effects
// Revert maybeNumber to initial `number | undefined` to cover all possibilities
if (maybeNumber) {
// Control flow: can refine to `number` again here
maybeNumber++;
}
Actual behavior:
Language service reports type nothing
on maybeNumber
after the call (even though it's number | undefined
before the call), so statement inside of the if
condition breaks.