有时,我得到TSLint错误“块是空的”。这发生在例如当我将无操作回调传递给函数时:
doSomething(() => {});
从我读到的,JSLint显然也是这样,但我没有验证。
我发现这些用法完全有效,所以我试图找出为什么空块被认为是坏的原因。但我唯一能找到的东西(例如在this answer中)是添加return;
以避免错误的指令。这不是我想要在每个空回调中做的事情。
为什么TSLint报告上面的空块是问题?我有什么理由不禁用支票吗?
为什么TSLint报告上面的空块是问题
为了防止错误。也许这个功能被遗忘了。推荐() => undefined
作为noop。
如果要禁用它,只需将"no-empty": false,
添加到tslint.json
(全局禁用)或使用/* tslint:disable:no-empty */
注释禁用内联。
与所有支票一样,您可以最终判断他们是否在帮助您。您可以使用以下选项之一关闭此TSLint检查。
禁用tslint.json中的规则
//...
"no-empty": false,
//...
禁用文件中的规则:
/* tslint:disable:no-empty */
如果将来某个时候发现导致问题的空块,您可以随时重新打开它。
一种抑制错误并指定该空块的方法是故意禁用规则临时:
// tslint:disable-next-line:no-empty
doSomething(() => {});
或者让它非空:
doSomething(() => {/**/});
tslint v5.10.0仅针对此案例向"allow-empty-functions"
引入了"no-empty"
选项;
"allow-empty-catch"
(在v5.5.0中引入)也许有用:
"no-empty": [true, "allow-empty-functions", "allow-empty-catch"]
另一种可能的解决方案是使用
doSomething(() => { return })
虽然这不是问题的问题,但我在尝试解决以下报告的行时发现了这种方法:
export const generatorFn = function * (): IterableIterator<any> { }
我的解决方案是添加如上所述的return
语句,因为生成器函数不能表示为箭头函数:
export const generatorFn = function * (): IterableIterator<any> { return }
如果您认为在某些情况下不想使用回调,则可以修改代码
从
doSomething(() => {});
至
doSomething(() => undefined);
用()=> {}代替这意味着你不关心这个回调。明确的类型转换将避免影响。
祝好运。