mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-04 15:39:31 +08:00
60 lines
1.2 KiB
Text
60 lines
1.2 KiB
Text
---
|
||
description: 'Disallow aliasing `this`.'
|
||
---
|
||
|
||
> 🛑 This file is source code, not the primary documentation location! 🛑
|
||
>
|
||
> See **https://typescript-eslint.io/rules/no-this-alias** for documentation.
|
||
|
||
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.
|