typescript 为什么TSLint和JSLint报告空块?

lf3rwulv  于 2023-01-03  发布在  TypeScript
关注(0)|答案(6)|浏览(123)

有时候,我会收到TSLint错误“block is empty”。例如,当我向函数传递一个no-op回调时,就会发生这种情况:

doSomething(() => {});

据我所知,JSLint显然也是这样做的,但我没有验证这一点。
我发现这些用法是完全有效的,所以我试着找出为什么空块被认为是坏的。但是我唯一能找到的(例如在this answer中)是添加一个return;以避免错误的指令。这不是我想在每个空回调中做的。
为什么TSLint报告上面的空块有问题?有什么理由我不应该禁用检查吗?

jhdbpxl9

jhdbpxl91#

为什么TSLint将上述空块报告为问题
为了防止 * 错误 *。可能忘记填写函数。建议将() => undefined作为noop。

更多

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

pepwfjgg

pepwfjgg2#

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

doSomething(() => {});

doSomething(() => undefined);

用()=〉{}替换它意味着你不关心这个回调函数,而显式类型转换可以避免这种暗示。
祝你好运。

wi3ka0sx

wi3ka0sx3#

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

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

或者使其为非空:

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

iibxawm44#

与所有检查一样,您可以最终判断它们是否对您有帮助。您可以使用以下选项之一关闭此TSLint检查。
禁用tslint.json中的规则

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

禁用文件中的规则:

/* tslint:disable:no-empty */

如果在将来的某个时候您发现一个空块给您带来了问题,您可以随时将其重新打开。

qij5mzcb

qij5mzcb5#

tslint v5.10.0"no-empty"中引入了"allow-empty-functions"选项,仅用于此情况;

"allow-empty-catch"(在v5.5.0中引入)也可能有用:

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

46scxncf6#

如果它不工作内联注解以禁用尝试此操作

// eslint-disable-next-line @typescript-eslint/no-empty-function
handler: () => { }, // here you empty function

相关问题