我想在这里对构造函数参数进行排序。我现在正在与Angular9一起使用TSLINT。是否有任何规则可以使用,如成员排序。
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"
]
}
],发布于 2020-06-03 16:15:43
这并不是对这个问题的回答,但我仍然认为这是值得一提的:
不要过于关注构造函数参数的顺序。
海事组织,你不应该过分关注构造函数中的参数顺序,尤其是如果你永远不会自己调用它的话,因为角将为你处理这个问题。
这里,您可以找到关于该主题的扩展讨论。
如果您想要遵守现有的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,
) {}与
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声明放在一起。
其他订购-选项
如果你坚持对你的论点进行排序,我会想到两种可能性
TSLint
据我所知--并且在最后几分钟尝试谷歌--没有任何规则能帮助你实现你的目标--这破坏了我的论点--似乎没有人认为有必要这么做。
如果您确实希望强制执行该规则,请查看创造你自己的规则。
发布于 2020-06-03 15:35:44
查看此规则: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"
]
}
]它也有自动修复功能。
https://stackoverflow.com/questions/62176557
复制相似问题