代码之家  ›  专栏  ›  技术社区  ›  theDmi

为什么TSLint和JSLint报告空块?

  •  81
  • theDmi  · 技术社区  · 11 年前

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

    doSomething(() => {});
    

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

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

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

    5 回复  |  直到 9 年前
        1
  •  140
  •   basarat    9 年前

    为什么TSLint报告上述空块为问题

    防止 错误 。也许函数忘记填写了。推荐 () => undefined 作为一个角落。

    更多

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

        2
  •  29
  •   spacedev    7 年前

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

    从…起

    doSomething(() => {});
    

    到

    doSomething(() => undefined);
    

    替换()=>{}表示您不关心此回调。而显式的类型转换将避免暗示。

    祝你好运

        3
  •  12
  •   Fenton    11 年前

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

    禁用tslint.json中的规则

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

    禁用文件中的规则:

    /* tslint:disable:no-empty */
    

    如果在将来的某个时候你发现一个空块给你带来了问题,你可以再次打开它。

        4
  •  12
  •   Estus Flask    7 年前

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

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

    或使其非空:

    doSomething(() => {/**/});
    
        5
  •  5
  •   Tomas Varga    7 年前

    tslint v5.11.0版 介绍 "allow-empty-functions" 选项 "no-empty" 仅针对这种情况;
    而且 "allow-empty-catch" (在中介绍 版本.5.0 )可能有用:

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