時々、「ブロックが空です」というTSLintエラーが発生します。これは例えば関数にノーオペレーションコールバックを渡すと:
doSomething(() => {});
私が読んだことから、JSLintは明らかに同じことをしているが、私はそれを確認しなかった。
これらの使用法は完全に有効だと思うので、空のブロックがまったく悪いとみなされる理由を見つけようとしました。しかし、私が見つけることができる唯一のことは(例えば この答え で)return;
エラーを回避します。これは、すべての空のコールバックでやりたいことですnot。
TSLintが空のブロックの上に問題として報告するのはなぜですか?チェックを無効にしない理由はありますか?
TSLintが空のブロックの上に問題として報告する理由
mistakesを防ぐため。おそらく、関数が記入されるのを忘れていました。 () => undefined
をお勧めします。
無効にする場合は、"no-empty": false,
をtslint.json
に追加する(グローバルに無効にする)か、/* tslint:disable:no-empty */
コメントを使用してインラインで無効にします。
すべてのチェックと同様に、あなたは彼らがあなたを助けているかどうかについて最終的な判断を下します。次のいずれかのオプションを使用して、このTSLintチェックをオフにできます。
Tslint.jsonのルールを無効にします
//...
"no-empty": false,
//...
ファイル内のルールを無効にします。
/* tslint:disable:no-empty */
将来、問題の原因となった空のブロックを見つけた場合、いつでも再びオンに戻すことができます。
tslint v5.10.導入"allow-empty-functions"
オプション"no-empty"
この場合のみ。
また"allow-empty-catch"
(v5.5.で導入)が役に立つかもしれません:
"no-empty": [true, "allow-empty-functions", "allow-empty-catch"]
エラーを抑制し、空のブロックが意図的にあったことを指定する方法は、ルールを一時的に無効にすることです。
// tslint:disable-next-line:no-empty
doSomething(() => {});
または空にしない:
doSomething(() => {/**/});
別の可能な解決策は
doSomething(() => { return })
これは尋ねられた質問そのものではありませんが、次の報告された行を解決しようと試みている間にこのアプローチを見つけました。
export const generatorFn = function * (): IterableIterator<any> { }
私の解決策は、上記のようなreturn
ステートメントを追加することでした。ジェネレーター関数は矢印関数として表現できないためです。
export const generatorFn = function * (): IterableIterator<any> { return }