为什么TSLint和JSLint报告空块?

问题描述 投票:33回答:6

有时,我得到TSLint错误“块是空的”。这发生在例如当我将无操作回调传递给函数时:

doSomething(() => {});

从我读到的,JSLint显然也是这样,但我没有验证。

我发现这些用法完全有效,所以我试图找出为什么空块被认为是坏的原因。但我唯一能找到的东西(例如在this answer中)是添加return;以避免错误的指令。这不是我想要在每个空回调中做的事情。

为什么TSLint报告上面的空块是问题?我有什么理由不禁用支票吗?

typescript jslint tslint
6个回答
57
投票

为什么TSLint报告上面的空块是问题

为了防止错误。也许这个功能被遗忘了。推荐() => undefined作为noop。

More

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


12
投票

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

禁用tslint.json中的规则

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

禁用文件中的规则:

/* tslint:disable:no-empty */

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


2
投票

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

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

或者让它非空:

doSomething(() => {/**/});

2
投票

tslint v5.10.0仅针对此案例向"allow-empty-functions"引入了"no-empty"选项; "allow-empty-catch"(在v5.5.0中引入)也许有用:

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

0
投票

另一种可能的解决方案是使用

doSomething(() => { return })

虽然这不是问题的问题,但我在尝试解决以下报告的行时发现了这种方法:

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

我的解决方案是添加如上所述的return语句,因为生成器函数不能表示为箭头函数:

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

-1
投票

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

doSomething(() => {});

doSomething(() => undefined);

用()=> {}代替这意味着你不关心这个回调。明确的类型转换将避免影响。

祝好运。

© www.soinside.com 2019 - 2024. All rights reserved.