1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
// @strictNullChecks:true
// @target:esnext
declare const p: Promise<number>
declare const p2: null | Promise<number>
declare const obj: { p: Promise<unknown> }
declare function pf(): Promise<boolean>
async function f() {
if (p) {} // err
if (!!p) {} // no err
if (p2) {} // no err
p ? f.arguments : f.arguments;
!!p ? f.arguments : f.arguments;
p2 ? f.arguments : f.arguments;
}
// all ok
async function g() {
if (p) {
p;
}
if (p && p.then.length) {}
if (p) {
if (p) {
if (p) {
!!await (((((((p)))))));
}
}
}
}
async function h() {
if (obj.p) {} // error
if (obj.p) { // ok
await obj.p;
}
if (obj.p && await obj.p) {} // ok
}
async function i(): Promise<string> {
if (pf()) { // error
return "true";
}
if (pf()) { // error
pf().then();
}
return "false";
}
|