eslint 成员排序陷阱 - 无论哪个声明先到都会导致错误
eslint member-ordering trap - whichever declaration comes first causes an error
我有这个代码:
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-ordering
Member 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 public。
有什么想法吗?谢谢
@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();
}
}
我有这个代码:
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-ordering Member 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 public。
有什么想法吗?谢谢
@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();
}
}