有时,我会收到 TSLint 错误“块为空”。例如,当我将无操作回调传递给函数时,就会发生这种情况:
doSomething(() => {});
从我读到的内容来看,JSLint 显然也是这样做的,但我没有验证这一点。
我发现这些用法完全有效,所以我试图找到一个为什么空块被认为是坏的原因。但我唯一能找到的(例如在这个答案中)是添加 areturn;
以避免错误的说明。这不是我想在每个空回调中做的。
为什么 TSLint 将空块上方报告为问题?有什么理由我不应该禁用检查吗?
有时,我会收到 TSLint 错误“块为空”。例如,当我将无操作回调传递给函数时,就会发生这种情况:
doSomething(() => {});
从我读到的内容来看,JSLint 显然也是这样做的,但我没有验证这一点。
我发现这些用法完全有效,所以我试图找到一个为什么空块被认为是坏的原因。但我唯一能找到的(例如在这个答案中)是添加 areturn;
以避免错误的说明。这不是我想在每个空回调中做的。
为什么 TSLint 将空块上方报告为问题?有什么理由我不应该禁用检查吗?
为什么 TSLint 将空块上方报告为问题
以防出错。可能函数忘记填写了。推荐() => undefined
为noop。
如果您想禁用它,只需添加"no-empty": false,
到您的tslint.json
(全局禁用)或使用/* tslint:disable:no-empty */
注释内联禁用它。
与所有检查一样,您对它们是否在帮助您拥有最终判断。您可以使用以下选项之一关闭此 TSLint 检查。
禁用 tslint.json 中的规则
//...
"no-empty": false,
//...
禁用文件中的规则:
/* tslint:disable:no-empty */
如果将来某个时候您发现一个导致您出现问题的空块,您可以随时重新打开它。
如果您觉得在某些情况下不想使用回调,您可以修改代码
从
doSomething(() => {});
到
doSomething(() => undefined);
将 () => {} 替换为此意味着您不关心此回调。和明确的类型转换将避免影响。
祝你好运。
一种抑制错误并指定空块是故意的方法是临时禁用规则:
// tslint:disable-next-line:no-empty
doSomething(() => {});
或使其非空:
doSomething(() => {/**/});
tslint v5.10.0仅针对这种情况引入了"allow-empty-functions"
选项;
也(在v5.5.0中引入)可能有用:"no-empty"
"allow-empty-catch"
"no-empty": [true, "allow-empty-functions", "allow-empty-catch"]