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.

Noncompliant Code Example

if (var == 'howdy') {...} // Noncompliant

Compliant Solution

if (var === 'howdy') {...}

Exceptions

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