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 [source,javascript] ---- function Foo() { let that = this; // Noncompliant that.val = 0; setInterval(function() { that.val++; }, 1000); } ---- == Compliant Solution [source,javascript] ---- function Foo() { this.val = 0; setInterval(() => { this.val++; }, 1000); } ---- == Exceptions This rule ignores ``++this++`` used for destructuring. [source,javascript] ---- const { foo, bar } = this; ---- The rule also ignores alias references of ``++this++`` in generators. [source,javascript] ---- const self = this; return function* () { let result = self.next(); while (!result.done) { yield result.value; result = self.next(); } }; ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::message.adoc[] include::highlighting.adoc[] endif::env-github,rspecator-view[]