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