awaiting a Promise recasts top variable to initial type · Issue #19918 · microsoft/TypeScript (original) (raw)

TypeScript Version: 2.6.1, 2.7.0-dev.20171110

function test(a: boolean): false | Date { if (a) { return new Date(); }

return false;

}

async function test2() { let b = test(true);

if (!b) {
    b = new Date();
}

await Promise.all([]).then(() => {
    b.getDate(); //Should compile.
        
})

}

Expected behavior:
Should compile
Actual behavior:
Throws with Property 'getDate' does not exist on type 'true'.


This can be reproduced with any return type and even when type inference is used.