# `no-this-alias`

Disallows aliasing `this`.

This rule prohibits assigning variables to `this`.

## Rule Details

Assigning a variable to `this` instead of properly using arrow lambdas may be a symptom of pre-ES6 practices
or not managing scope well.

Instead of storing a reference to `this` and using it inside a `function () {`:

```js
const self = this;
>
setTimeout(function () {
    self.doWork();
});
```

Use `() =>` arrow lambdas, as they preserve `this` scope for you:

```js
setTimeout(() => {
  this.doWork();
});
```

Examples of **incorrect** code for this rule:

(see the rationale above)

Examples of **correct** code for this rule:

(see the rationale above)

## Options

You can pass an object option:

```jsonc
{
  "@typescript-eslint/no-this-alias": [
    "error",
    {
      "allowDestructuring": false, // Disallow `const { props, state } = this`; true by default
      "allowedNames": ["self"] // Allow `const self = this`; `[]` by default
    }
  ]
}
```

## When Not To Use It

If you need to assign `this` to variables, you shouldn’t use this rule.
