gpt4 book ai didi

typescript - eslint 成员排序陷阱 - 先出现的声明会导致错误

转载 作者:行者123 更新时间:2023-12-04 01:07:26 24 4
gpt4 key购买 nike

我有这个代码:

export class RouteParamsService {
private routeParamsChangeSource = new ReplaySubject<Params>() // lets call this line 1
routeParamsChange$ = this.routeParamsChangeSource.asObservable() // lets call this line 2
... etc
}
如果我将第 1 行放在第 2 行之前,则会出现错误:

@typescript-eslint/member-orderingMember routeParamsChange$ should be declared before all private instance field definitions


如果我将第 2 行放在第 1 行之前,则会出现错误:

Property routeParamsChangeSource is used before its initialisation


我理解这两个错误以及为什么我会得到它们。但是,是否有一条规则可以放宽规则,但仅当您最终陷入这样的陷阱时?我知道我可以做 eslint-disable-line @typescript-eslint/member-ordering但我不想每次遇到这个问题时都这样做(我经常遇到这个问题)。
我也不想公开 routeParamsChangeSource。
有任何想法吗?谢谢

最佳答案

@typescript-eslint/member-ordering lint 规则目前不了解字段之间的依赖关系。
正如您所理解的 - 这种依赖会产生一个复杂的排序问题,社区中还没有人有足够的动力去解决这个问题。
您可以在此处查看跟踪它的问题:https://github.com/typescript-eslint/typescript-eslint/issues/2882
该项目欢迎贡献——如果这是一个对你很重要的问题。

至于实际的解决方法或修复。
禁用评论是一个很好的临时措施。
另一种选择是将依赖项移动到构造函数中:

export class RouteParamsService {
private routeParamsChangeSource = new ReplaySubject<Params>();
routeParamsChange$;

constructor() {
this.routeParamsChange$ = this.routeParamsChangeSource.asObservable();
}
}

关于typescript - eslint 成员排序陷阱 - 先出现的声明会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65964452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com