Rule: no-this-assignment
Disallows unnecessary references to this.
Rationale
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 () {:
const self = this;
setTimeout(function () {
self.doWork();
});
Use () => arrow lambdas, as they preserve this scope for you:
setTimeout(() => {
this.doWork();
});
Config
Two options may be provided on an object:
allow-destructuringallows using destructuring to access members ofthis(e.g.{ foo, bar } = this;).allowed-namesmay be specified as a list of regular expressions to match allowed variable names.
Config examples
"no-this-assignment": true
"no-this-assignment": [true, {"allowed-names": ["^self$"], "allow-destructuring": true}]
Schema
{
"additionalProperties": false,
"properties": {
"allow-destructuring": {
"type": "boolean"
},
"allowed-names": {
"listType": "string",
"type": "list"
}
},
"type": "object"
}