Assigning ``++this++`` to a local variable is a way to reference parent context inside inner functions. In TypeScript when using arrow functions this happens automatically.

This rule raises an issue when ``++this++`` is assigned to a local variable.


== Noncompliant Code Example

----
function Foo() {
  let that = this;  // Noncompliant
  that.val = 0;

  setInterval(function() {
    that.val++;
  }, 1000);
}
----


== Compliant Solution

----
function Foo() {
  this.val = 0;

  setInterval(() => {
    this.val++;
  }, 1000);
}
----


== Exceptions

This rule ignores ``++this++`` used for destructuring.

----
const { foo, bar } = this; 
----

