web-dev-qa-db-ja.com

Tslint-些細な推測型-ここに型を含めるのはなぜ悪い習慣ですか?

VSCodeでは、次のコードをタイプとともに追加すると、linter tslintが文句を言います。

serverId: number = 10;

また、次のメッセージが表示されます。

[tslint]数値リテラルから簡単に推測される型番号、型注釈の削除(no-inferrable-types)

タイプ「番号」を削除すると、メッセージは消えます。

ここに型情報を含めるのはなぜ悪い習慣ですか?

41
Tony Scialo

それは悪い習慣ではありませんが、serverId: number = 10は冗長です。なぜなら、number型は、プロパティが割り当てられるときに 推論 であるためです。これはTSLint no-inferrable-typesが警告するものです:

コンパイラによって簡単に推論できる明示的な型は、コードをより冗長にします。

serverIdプロパティは最初は未定義であるが後で定義される可能性がある場合(たとえば、constructor関数で)を除いて、numberは安全に省略できます。

この方法は、 noImplicitAny オプションを使用すると最適に機能します。この方法では、推論されなかったために誤って型が省略される可能性がないためです。

43
Estus Flask

上で述べたように、それは技術的に冗長であり、乱雑であると考えることができます。個人的に私はこの意見を気にせず、さまざまな特定のマイナーなワークフローの理由のためにタイプと値の両方を持つことを好み、ルールを正当化する混乱のレベルであるとは思わない。あなたがそれを無効にしたい場合、ここに方法があります。

  • tslint.jsonを開きます
  • 「no-inferrable-types」属性を見つける
  • ignore-propertiesをその配列に追加します

関連するtslintのドキュメント https://palantir.github.io/tslint/rules/no-inferrable-types/

21
Alex Spera

このエラーは、tslint.jsonファイルの設定が原因です。

次のように文字列を初期化するだけです:

serverId = 10;

または

serverId : number;

または、tslint.jsonファイルのno-inferrable-typesの構成を次のように設定します。

no-inferrable-types : false
11
Pardeep Jain

不要であり、新しい情報を提供しません。基本的には「10は数字です」というコメントです。

2
Sulthan

これは今は奇妙なことかもしれませんが、同様のエラーが発生し、angularアプリのtslint.jsonファイルに「no-inferrable-types」属性が見つかりませんでした。そもそもなぜそれが生成されなかったのかはわかりませんが、ここに挿入する必要がありました

"rules": {
    **"no-inferrable-types": false,**
    "directive-selector": [
      true,
      "attribute",
      "app",
      "camelCase"
    ],

そして、それは魅力のように働きました!

追伸これは、私がやったのと同じ問題で迷っている人のためのものであるか、jsonファイルに私たちの最後から追加する必要があることを言及したソリューションの誰もいないので間違っているかもしれません。

2
Akshay Kumar

それはノイズとして見ることができました。重要な部分を入力することがより重要です

1
Julian