我想在这里对构造函数参数进行排序。我现在将TSLINT与Angular9结合使用。有没有可以使用的规则,例如会员顺序。
constructor(
// Sort these
private readonly router: Router,
private readonly _changeDetector: ChangeDetectorRef,
private readonly favoritesService: FavoritesService,
private readonly jsonService: JsonService,
private readonly messageService: MessageService,
public readonly helperService: HelperService,
public readonly dialog: MatDialog,
public readonly activatedRoute: ActivatedRoute,
) {
//
}
我当前正在使用这些规则,但是这些没有对构造函数参数进行排序。
"member-ordering": [
true,
{
"alphabetize": true,
"order": [
"private-static-field",
"protected-static-field",
"public-static-field",
"private-instance-field",
"protected-instance-field",
"public-instance-field",
"private-constructor",
"protected-constructor",
"public-constructor",
"private-static-method",
"protected-static-method",
"public-static-method",
"private-instance-method",
"protected-instance-method",
"public-instance-method"
]
}
],
检查此规则:https://palantir.github.io/tslint/rules/member-ordering/
然后您可以将此规则添加到您的配置中:
"member-ordering": [
true,
{
"alphabetize": true,
"order": [
"public-static-field",
"public-instance-field",
"public-constructor",
"private-static-field",
"private-instance-field",
"private-constructor",
"public-instance-method",
"protected-instance-method",
"private-instance-method"
]
}
]
它也具有自动修复功能。
这实际上不是问题的答案,但我仍然认为值得一提:
IMO,您不应该过多地关注构造函数中的参数顺序-尤其是如果您永远不会自己调用它,因为Angular会为您处理它。
Here,您可以找到有关该主题的扩展讨论。
如果您想遵循现有的API或公开公开您的功能并希望使其更加简洁,那么排序可能很重要。在常规函数中,排序可能使理解函数调用更容易,或者只是感觉“更自然”。所有这些都不适用于没有人会调用的构造函数。
请考虑以下两个片段:
constructor(
private readonly router: Router,
private readonly _changeDetector: ChangeDetectorRef,
private readonly favoritesService: FavoritesService,
private readonly jsonService: JsonService,
private readonly messageService: MessageService,
public readonly helperService: HelperService,
public readonly dialog: MatDialog,
public readonly activatedRoute: ActivatedRoute,
) {}
vs。
constructor(
private readonly _changeDetector: ChangeDetectorRef,
public readonly activatedRoute: ActivatedRoute,
public readonly dialog: MatDialog,
private readonly favoritesService: FavoritesService,
public readonly helperService: HelperService,
private readonly jsonService: JsonService,
private readonly messageService: MessageService,
private readonly router: Router,
) {}
其中哪个更好?如果有的话,它将是第一个,因为它将private
和public
声明保持在一起。
如果您坚持要整理论据,我会想到两种可能性
据我所知-并在最后一分钟尝试搜索google-没有规则可以帮助您实现目标-破坏了我的论点,即似乎没有人需要它。