Closed
Description
In complex boolean expressions it's clearer to do Boolean(x)
cast rather than !!x
in favor of readability. Also the latter way of casting something to boolean is error prone and it's easy to mistype !
. Typescript should treat Boolean(x)
the same way as !!
.
TypeScript Version: 3.6.3,3.7.5,3.8.3 (tried top 3 available in playground)
Search Terms:
boolean cast non null
double negation boolean cast
double not Boolean
Code
interface A {
a: number
}
const a: A | undefined
console.log(a && a?.a) // works
console.log(!!a && a.a) // works
console.log(Boolean(a) && a.a) // warns that `Object is possibly 'undefined'.(2532)`
Expected behavior:
Boolean(x)
should be treated as equivalent of !!x
Actual behavior:
Using Boolean
as a function does not contribute to TS understanding of object existense
Related Issues: