The usage of non-null assertion in front of assignments or comparators (``++! =++``, ``++! ==++`` or ``++! ===++``) can be too easily confused with a negative comparison. The rule raises an issue when ``++! =++``, ``++! ==++`` and ``++! ===++`` are used with a whitespace between the two operators. == Why is this an issue? The usage of non-null assertion on the left-hand side of an assignment or comparison can be misread and produce unexpected results when one would expect a negative comparator. //=== What is the potential impact? == How to fix it If you really meant to use the non-null assertion on the variable on which the issue is raised, you can simply move the non-null assertion to another expression, or define a new one. Otherwise, if an extra whitespace slipped in the middle of a negative comparator, you can simply remove it. === Code examples ==== Noncompliant code example [source,typescript,diff-id=1,diff-type=noncompliant] ---- let foo: number | undefined; foo = bar! = 12; // Noncompliant; Is that really what's meant? if (foo! == bar) { // Noncompliant; Is that really what's meant? // ... } if (foo! === bar) { // Noncompliant; Is that really what's meant? // ... } ---- ==== Compliant solution [source,typescript,diff-id=1,diff-type=compliant] ---- let foo: number | undefined; foo = bar = 12; if (foo == bar) { // ... } if (foo === bar) { // ... } ---- //=== How does this work? //=== Pitfalls //=== Going the extra mile == Resources === Documentation * TypeScript Documentation - https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-[Non-null Assertion Operator (Postfix ``++!++``)] //=== Articles & blog posts //=== Conference presentations //=== Standards