VSCodeでは、次のコードをタイプとともに追加すると、linter tslintが文句を言います。
serverId: number = 10;
また、次のメッセージが表示されます。
[tslint]数値リテラルから簡単に推測される型番号、型注釈の削除(no-inferrable-types)
タイプ「番号」を削除すると、メッセージは消えます。
ここに型情報を含めるのはなぜ悪い習慣ですか?
それは悪い習慣ではありませんが、serverId: number = 10
は冗長です。なぜなら、number
型は、プロパティが割り当てられるときに 推論 であるためです。これはTSLint no-inferrable-types
が警告するものです:
コンパイラによって簡単に推論できる明示的な型は、コードをより冗長にします。
serverId
プロパティは最初は未定義であるが後で定義される可能性がある場合(たとえば、constructor
関数で)を除いて、number
は安全に省略できます。
この方法は、 noImplicitAny
オプションを使用すると最適に機能します。この方法では、推論されなかったために誤って型が省略される可能性がないためです。
上で述べたように、それは技術的に冗長であり、乱雑であると考えることができます。個人的に私はこの意見を気にせず、さまざまな特定のマイナーなワークフローの理由のためにタイプと値の両方を持つことを好み、ルールを正当化する混乱のレベルであるとは思わない。あなたがそれを無効にしたい場合、ここに方法があります。
ignore-properties
をその配列に追加します関連するtslintのドキュメント https://palantir.github.io/tslint/rules/no-inferrable-types/
このエラーは、tslint.json
ファイルの設定が原因です。
次のように文字列を初期化するだけです:
serverId = 10;
または
serverId : number;
または、tslint.jsonファイルのno-inferrable-types
の構成を次のように設定します。
no-inferrable-types : false
不要であり、新しい情報を提供しません。基本的には「10は数字です」というコメントです。
これは今は奇妙なことかもしれませんが、同様のエラーが発生し、angularアプリのtslint.jsonファイルに「no-inferrable-types」属性が見つかりませんでした。そもそもなぜそれが生成されなかったのかはわかりませんが、ここに挿入する必要がありました
"rules": {
**"no-inferrable-types": false,**
"directive-selector": [
true,
"attribute",
"app",
"camelCase"
],
そして、それは魅力のように働きました!
追伸これは、私がやったのと同じ問題で迷っている人のためのものであるか、jsonファイルに私たちの最後から追加する必要があることを言及したソリューションの誰もいないので間違っているかもしれません。
それはノイズとして見ることができました。重要な部分を入力することがより重要です