ich in einer ähnlichen Situation bin. Ich habe tslint-microsoft-contrib als Basis verwendet.
"extends": "tslint-microsoft-contrib",
Es hilft definitiv in allen Arten, die Sie erwarten würden. Einige Regeln müssen jedoch für AngularJs TypeScript-Code neu konfiguriert oder deaktiviert werden. Ich habe die folgenden Konfigurationsänderungen an Funktionsnamen, member-ordering, no-import-side-effect und no-unsafe-any:
"function-name": [
true,
{
// allow public methods to start with $ for $onChanges
// and other Angular lifecycle hooks
"method-regex": "^[a-z$][\\w\\d]+$",
// otherwise unchanged
"private-method-regex": "^[a-z][\\w\\d]+$",
"protected-method-regex": "^[a-z][\\w\\d]+$",
"static-method-regex": "^[A-Z_\\d]+$",
"function-regex": "^[a-z][\\w\\d]+$"
}
],
// Variant ordering that places public statics before constructor
// So we can place AngularJs $inject just before the constructor
"member-ordering": [
true,
{
"order": [
"public-instance-field",
"protected-instance-field",
"private-instance-field",
"public-static-field",
"protected-static-field",
"private-static-field",
"constructor",
"public-static-method",
"protected-static-method",
"private-static-method",
"public-instance-method",
"protected-instance-method",
"private-instance-method"
]
}
],
// angular.module(...).component(...) is a side-effect
"no-import-side-effect": false,
// ng.IController, among others in @types/angular, uses "any"
// and is flagged by this rule
"no-unsafe-any": false,
Je nachdem, wie Sie AngularJS Komponenten definieren, können Sie nicht ohne-Import-Nebenwirkung auf false gesetzt müssen. Ich habe keinen Konsens darüber gefunden, wie AngularJs-Komponenten in TypeScript am besten definiert werden können. Dies ist eine Schande, da dies als Schritt 1 für die Migration von AngularJs zu Angular 2+ aufgeführt ist.
Leider fehlt hier die Möglichkeit, benutzerdefinierte tslint Regeln für AngularJs mit Best Practices übereinstimmen. Ich spiele mit der Idee, eslint-plugin-angular für den generierten Code auszuführen oder diese Regeln in TypeScript zu konvertieren. Die bessere Lösung könnte jedoch sein, zu Angular 2+ zu migrieren und codelyzer zu verwenden.