no-this-alias
Disallow aliasing
this
.
在 ESLint 配置 中扩展"plugin:@typescript-eslint/recommended"
可启用此规则。
将变量分配给 this
而不是正确使用箭头 lambda 可能是 ES6 之前的实践或范围管理不善的症状。
¥Assigning a variable to this
instead of properly using arrow lambdas may be a symptom of pre-ES6 practices
or not managing scope well.
- Flat Config
- Legacy Config
export default tseslint.config({
rules: {
"@typescript-eslint/no-this-alias": "error"
}
});
module.exports = {
"rules": {
"@typescript-eslint/no-this-alias": "error"
}
};
在线运行试试这个规则 ↗
示例
¥Examples
- ❌ Incorrect
- ✅ Correct
const self = this;
setTimeout(function () {
self.doWork();
});
Open in PlaygroundsetTimeout(() => {
this.doWork();
});
Open in Playground选项
该规则接受以下选项:
type Options = [
{
/** Whether to ignore destructurings, such as `const { props, state } = this`. */
allowDestructuring?: boolean;
/** Names to ignore, such as ["self"] for `const self = this;`. */
allowedNames?: string[];
},
];
const defaultOptions: Options = [
{ allowDestructuring: true, allowedNames: [] },
];
¥Options
allowDestructuring
Whether to ignore destructurings, such as const { props, state } = this
. Default: true
.
有时,从类实例中解构属性可能很有用,例如在其方法之一中从实例中检索多个属性。allowDestructuring
允许这些解构,默认情况下为 true
。你可以通过将 allowDestructuring
设置为 false
来明确禁止它们。
¥It can sometimes be useful to destructure properties from a class instance, such as retrieving multiple properties from the instance in one of its methods.
allowDestructuring
allows those destructures and is true
by default.
You can explicitly disallow them by setting allowDestructuring
to false
.
{ "allowDestructuring": false }
选项的代码示例:
¥Examples of code for the { "allowDestructuring": false }
option:
- ❌ Incorrect
- ✅ Correct
class ComponentLike {
props: unknown;
state: unknown;
render() {
const { props, state } = this;
console.log(props);
console.log(state);
}
}
Open in Playgroundclass ComponentLike {
props: unknown;
state: unknown;
render() {
console.log(this.props);
console.log(this.state);
}
}
Open in PlaygroundallowedNames
Names to ignore, such as ["self"] for const self = this;
. Default: []
.
no-this-alias
也可以交替用于仅允许特定名称列表作为 this
别名。我们建议不要这样做,除 非作为解决所有违规行为的临时步骤。
¥no-this-alias
can alternately be used to allow only a specific list of names as this
aliases.
We recommend against this except as a transitory step towards fixing all rule violations.
{ "allowedNames": ["self"] }
选项的代码示例:
¥Examples of code for the { "allowedNames": ["self"] }
option:
- ❌ Incorrect
- ✅ Correct
class Example {
method() {
const that = this;
}
}
Open in Playgroundclass Example {
method() {
const self = this;
}
}
Open in Playground何时不使用它
¥When Not To Use It
如果你的项目的结构需要将 this
分配给变量,则此规则可能不适合你。如果只有项目的子集将 this
分配给变量,那么你可能考虑在特定情况下使用 ESLint 禁用注释,而不是完全禁用此规则。
¥If your project is structured in a way that it needs to assign this
to variables, this rule is likely not for you.
If only a subset of your project assigns this
to variables then you might consider using ESLint disable comments for those specific situations instead of completely disabling this rule.
'## 资源'