Tslint: TypeScriptコーディングガイドラインでは、インターフェイスの前にIを付けないようにしています

作成日 2017年09月30日  ·  15コメント  ·  ソース: palantir/tslint

バグレポート

  • __TSLintバージョン__:3.15.1
  • __TypeScriptバージョン__:2.5.3
  • __TSLintの実行__ :( 1つ選択)CLI

リンティングされているTypeScriptコード

// code snippet
interface TypeConfig { }

実際の動作

[tslint]インターフェース名は大文字のI(インターフェース名)で始まる必要があります

Microsoftは、インターフェイス名の前にIを付けないことを推奨しています-https ://github.com/Microsoft/TypeScript/wiki/Coding-guidelines#names

Question

最も参考になるコメント

気にしないでください、私はそれを理解しました:

{
  "extends": [
    "tslint:recommended",
    "tslint-react",
    "tslint-config-prettier"
  ],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts"
    ]
  },
  "rules": {
    "interface-name" : [true, "never-prefix"]
  }
}

全てのコメント15件

これらは、typescriptコンパイラ自体を作成するためのガイドラインであることに注意してください。 これは、他のタイプスクリプトプロジェクトのスタイルガイドとなることを意図したものではありません。
プロジェクトにこのスタイルガイドを採用する場合は、tslint.jsonのルールの構成を"interface-name" : [true, "never"]変更するだけです。

通行人から50セント:
代わりに"interface-name" : [true, "never-prefix"]
"interface-name" : [true, "never"]
🙌

ルールドキュメント

Create React Appによって生成されるデフォルトのtslint.json interface-nameを追加して、「I」プレフィックスをオフにしてみました。 ただし、機能していないようです。 多分私はそれを間違った場所に置いていますか?

{
  "extends": [
    "tslint:recommended",
    "tslint-react",
    "tslint-config-prettier"
  ],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts"
    ]
  },
  "interface-name" : [true, "never-prefix"]
}

気にしないでください、私はそれを理解しました:

{
  "extends": [
    "tslint:recommended",
    "tslint-react",
    "tslint-config-prettier"
  ],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts"
    ]
  },
  "rules": {
    "interface-name" : [true, "never-prefix"]
  }
}

何らかの理由で"interface-name": [true, "never"]は私には機能しません。 しかし、 "interface-name": falseは正常に機能します

@ vasilev-alex "interface-name": [true, "never-prefix"]接頭辞なしのエンパシス

まだ"interface name must start with a capitalized I"

これは私のtslint.jsonです:

{
  "rules": {
    "interface-name": [
      true,
      "never-prefix"
    ]
  },
  "extends": [
    "tslint:recommended",
    "tslint-react",
    "tslint-config-prettier"
  ],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts",
      "coverage/lcov-report/*.js"
    ]
  }
}

私は何が間違っているのですか?

@ offg777明らかなことは何もありません。 リポジトリへのリンク?

設定は私には正しいように見えます-それをオーバーライドするものは他にありませんか? ルールは間違いなく私にとって適切に機能しています

@ offg777

「インターフェース名は大文字のIで始まる必要があります」

このエラーはどこから発生しますか? IDEからですか、それともCLIを実行しているときですか?
tslintの正確なカスケードルールについてはわかりませんが、「extends」の下に「rules」ブロックを配置してみましたか?

素晴らしい

eslintはすでにそれをサポートしていますか?

設定

"rules": {
    "interface-name": [
      true,
      "never-prefix"
    ]
  },

結果は
Configuration for rule "interface-name" is invalid

たぶん、このルールは理由で存在しますか? すべてのインターフェースには、実装クラスとは明らかに異なる意味のある名前を付ける必要がありますか?

これは、_あなた自身のプロジェクトの外で_あなたの好みに従って世界の残りの部分を強制するという血まみれの迷惑な考えです。 プログラミングツールでの独自の命名規則の妨害は、製品開発者のニューラルネットワークのバグです;)

良いことTSLintは非推奨になり、この問題はもはや関係ありません! #4534

このページは役に立ちましたか?
0 / 5 - 0 評価