Inspired by #7746 but making a new issue for clarity
Bad code:
function func(): boolean { return Math.random() > 0.5; }
if (func) {
// oops, meant to write func()
}
Change: Under --strictNullChecks, it becomes an error to use an expression in a truthiness position unless the type of the expression is possibly-falsy
Possibly-falsy types are:
any
- The primitives:
string, string literal types, number, enum types, and boolean
- Type parameters
- Union types containing possibly-falsy types
- An intersection type where any member is possibly falsy
A truthiness position is:
- The test expression of an
if, while, or do/while
- The middle expression of a
for
- The first operand of
?, && or ||
- The operand of
!
Inspired by #7746 but making a new issue for clarity
Bad code:
Change: Under
--strictNullChecks, it becomes an error to use an expression in a truthiness position unless the type of the expression is possibly-falsyPossibly-falsy types are:
anystring, string literal types,number, enum types, andbooleanA truthiness position is:
if,while, ordo/whilefor?,&&or||!