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;
The rule also ignores alias references of this in generators.
const self = this;
return function* () {
  let result = self.next();
  while (!result.done) {
    yield result.value;
    result = self.next();
  }
};