60

有时,我会收到 TSLint 错误“块为空”。例如,当我将无操作回调传递给函数时,就会发生这种情况:

doSomething(() => {});

从我读到的内容来看,JSLint 显然也是这样做的,但我没有验证这一点。

我发现这些用法完全有效,所以我试图找到一个为什么空块被认为是坏的原因。但我唯一能找到的(例如在这个答案中)是添加 areturn;以避免错误的说明。这不是我想在每个空回调中做的。

为什么 TSLint 将空块上方报告为问题?有什么理由我不应该禁用检查吗?

4

5 回答 5

109

为什么 TSLint 将空块上方报告为问题

以防出错。可能函数忘记填写了。推荐() => undefined为noop。

更多的

如果您想禁用它,只需添加"no-empty": false,到您的tslint.json(全局禁用)或使用/* tslint:disable:no-empty */注释内联禁用它。

于 2015-07-24T09:26:48.833 回答
13

与所有检查一样,您对它们是否在帮助您拥有最终判断。您可以使用以下选项之一关闭此 TSLint 检查。

禁用 tslint.json 中的规则

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

禁用文件中的规则:

/* tslint:disable:no-empty */

如果将来某个时候您发现一个导致您出现问题的空块,您可以随时重新打开它。

于 2015-07-25T20:07:37.703 回答
13

如果您觉得在某些情况下不想使用回调,您可以修改代码

doSomething(() => {});

doSomething(() => undefined);

将 () => {} 替换为此意味着您不关心此回调。和明确的类型转换将避免影响。

祝你好运。

于 2018-02-26T11:29:49.530 回答
12

一种抑制错误并指定空块是故意的方法是临时禁用规则:

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

或使其非空:

doSomething(() => {/**/});
于 2018-10-14T12:55:10.450 回答
4

tslint v5.10.0仅针对这种情况引入了"allow-empty-functions"选项; 也(在v5.5.0中引入)可能有用:"no-empty"
"allow-empty-catch"

"no-empty": [true, "allow-empty-functions", "allow-empty-catch"]
于 2019-02-13T20:21:56.137 回答