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.
TypeScript Version:
nightly (1.9.0-dev.20160429)
Code
Expected behavior:
Everything works without errors,
maybeNumberpreserves type ofnumber | undefinedand refines tonumberin theifblock.Actual behavior:
Language service reports type
nothingonmaybeNumberafter the call (even though it'snumber | undefinedbefore the call), so statement inside of theifcondition breaks.