web-dev-qa-db-ja.com

TSLintとJSLintが空のブロックを報告するのはなぜですか?

時々、「ブロックが空です」というTSLintエラーが発生します。これは例えば関数にノーオペレーションコールバックを渡すと:

doSomething(() => {});

私が読んだことから、JSLintは明らかに同じことをしているが、私はそれを確認しなかった。

これらの使用法は完全に有効だと思うので、空のブロックがまったく悪いとみなされる理由を見つけようとしました。しかし、私が見つけることができる唯一のことは(例えば この答え で)return;エラーを回避します。これは、すべての空のコールバックでやりたいことですnot

TSLintが空のブロックの上に問題として報告するのはなぜですか?チェックを無効にしない理由はありますか?

33
theDmi

TSLintが空のブロックの上に問題として報告する理由

mistakesを防ぐため。おそらく、関数が記入されるのを忘れていました。 () => undefinedをお勧めします。

もっと

無効にする場合は、"no-empty": false,tslint.jsonに追加する(グローバルに無効にする)か、/* tslint:disable:no-empty */コメントを使用してインラインで無効にします。

57
basarat

すべてのチェックと同様に、あなたは彼らがあなたを助けているかどうかについて最終的な判断を下します。次のいずれかのオプションを使用して、このTSLintチェックをオフにできます。

Tslint.jsonのルールを無効にします

//...
"no-empty": false,
//...

ファイル内のルールを無効にします。

/* tslint:disable:no-empty */

将来、問題の原因となった空のブロックを見つけた場合、いつでも再びオンに戻すことができます。

12
Fenton

tslint v5.10.導入"allow-empty-functions"オプション"no-empty"この場合のみ。
また"allow-empty-catch"v5.5.で導入)が役に立つかもしれません:

"no-empty": [true, "allow-empty-functions", "allow-empty-catch"]
2
Tomas Varga

エラーを抑制し、空のブロックが意図的にあったことを指定する方法は、ルールを一時的に無効にすることです。

// tslint:disable-next-line:no-empty
doSomething(() => {});

または空にしない:

doSomething(() => {/**/});
2
Estus Flask

別の可能な解決策は

doSomething(() => { return })

これは尋ねられた質問そのものではありませんが、次の報告された行を解決しようと試みている間にこのアプローチを見つけました。

export const generatorFn = function * (): IterableIterator<any> { }

私の解決策は、上記のようなreturnステートメントを追加することでした。ジェネレーター関数は矢印関数として表現できないためです。

export const generatorFn = function * (): IterableIterator<any> { return }
0
Patrick Roberts