Angular 1项目的TSLint配置

时间:2016-09-20 23:25:33

标签: angularjs typescript eslint tslint

我的团队正在使用Angular 1.5。* + typescript。

开展项目

有人可以为我这样的项目提供最佳TSLint配置的建议吗?

我现在想要从官方TS repo和ESlint规则集中添加TSLint配置(https://github.com/Microsoft/TypeScript/blob/master/tslint.json)。 https://github.com/Microsoft/TypeScript/blob/master/tslint.json

这还够吗?你觉得怎么样?

提前感谢您的回答。

2 个答案:

答案 0 :(得分:1)

  

这还够吗?你觉得怎么样?

我个人不会打开它,直到它成为一个问题。幸运的是,我很幸运能让我的队友们尊重和爱,所以他们知道我的意思很好。

您可以选择那个或只是选择:

{
  "extends": "tslint:recommended"
}

使用palantir默认值:https://github.com/palantir/tslint/#configuration

答案 1 :(得分:0)

我处于类似情况。我使用tslint-microsoft-contrib作为基线。

  "extends": "tslint-microsoft-contrib",

它绝对有助于您期望的所有方式。但是,需要为AngularJs TypeScript代码重新配置或关闭某些规则。我对功能名称member-orderingno-import-side-effectno-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,

根据您定义AngularJs组件的方式,您可能不需要将no-import-side-effect设置为false。我没有看到在TypeScript中定义AngularJs组件的最佳方法有任何共识,这是一种耻辱,因为它被列为从AngularJs迁移到Angular 2 +的第1步。

可悲的是,遗漏了AngularJs的自定义tslint规则以匹配最佳实践的可能性。我想到在生成的代码上运行eslint-plugin-angular或将这些规则转换为TypeScript的想法。但更好的解决方案可能是迁移到Angular 2+并使用 codelyzer