The ==
and !=
operators do type coercion before comparing values. This is bad because it can mask type errors. For
example, it evaluates ' \t\r\n' == 0
as true
.
It is best to always use the side-effect-less ===
and !==
operators instead.
if (var == 'howdy') {...} // Noncompliant
if (var === 'howdy') {...}
Even if testing the equality of a variable against null
doesn't do exactly what most TypeScript developers believe, the use of
==
or !=
is tolerated in such contexts. As shown below, if foo
hasn't been initialized, its default value is
not null
but undefined
. Nevertheless undefined == null
, so TypeScript developers get the expected behavior.
if (foo == null) {...} // ignored