如何解决ESLint规则@typescript-eslint/no-this-alias报错问题
解决
@typescript-eslint/no-this-alias报错的方案 @typescript-eslint/no-this-alias规则禁止将this赋值给本地变量,目的是避免this的指向被混淆或意外修改。要在不忽略规则的前提下解决问题,只需重构代码逻辑,避开直接赋值this的操作:
重构后的代码
class LinkedList { value: number; next: LinkedList | null; constructor(value: number) { this.value = value; this.next = null; } reverse(): LinkedList { let prev: LinkedList | null = null; // 先处理当前节点(this),避免将this赋值给本地变量 let currentNode: LinkedList | null = this.next; this.next = prev; prev = this; while (currentNode !== null) { const next = currentNode.next; currentNode.next = prev; prev = currentNode; currentNode = next; } return prev; } }
重构思路
原代码将this赋值给current作为迭代起点,触发了规则报错。现在我们:
- 先单独处理
this节点:将它的next指向初始的null(即prev),再把prev更新为this - 把迭代起点改为
this.next,后续循环逻辑和原代码保持一致,完成剩余节点的反转
这样既遵守了ESLint规则,又完全保留了链表反转的功能。
内容的提问来源于stack exchange,提问作者Yukinosuke Takada
相关产品推荐
相关产品推荐

