代码之家  ›  专栏  ›  技术社区  ›  Pete Irfan TahirKheli

eslint对象速记错误,传入变量

  •  73
  • Pete Irfan TahirKheli  · 技术社区  · 6 年前

    我有以下功能来设置select2插件,如果有多个插件,则需要选择保持打开状态,如果没有,则需要选择保持关闭状态:

    function setUpSelects($selects, closeOnSelect) {
      $selects.each((i, item) => {
        const $item = $(item);
    
        $item.select2({
          closeOnSelect: closeOnSelect,  // <-- error on this line
          minimumResultsForSearch: Infinity,
          placeholder: $item.data('placeholder') || $item.attr('placeholder'),
        });
      });
    }
    
    setUpSelects($('select:not([multiple])'), false);
    setUpSelects($('select[multiple]'), true);
    

    然而,当我试图运行这段代码时,eslint检查器给了我一个错误(在上面显示的行上):

    错误预期属性速记对象速记

    我已经搜索并阅读了文档,但它没有显示您打算如何在上使用变量和不可接受的答案 this question 似乎认为这可能是eslint中的一个bug(尽管我没有发现任何证据支持这一点)

    有什么方法可以让它工作吗?或者我应该禁用该行的规则吗?

    3 回复  |  直到 6 年前
        1
  •  145
  •   Carl Edwards monkbroc    6 年前

    excerpt 来自eslint关于该问题的信息:

    需要对象文字速记语法(对象速记)-规则详细信息

    该规则强制使用速记语法。这适用于 在对象文字和任何 在键名称与指定的 变量

    改变

    closeOnSelect: closeOnSelect
    

    只是

    closeOnSelect
    
        2
  •  10
  •   Valeriy Katkov    4 年前

    rule 检查对象文字速记 syntax 使用,例如 {a, b} 而不是 {a: a, b: b} . 规则是可配置的,请参阅 options 了解更多详细信息。

    尽管这种速记语法很方便,但在某些情况下,您可能不想强制使用它。您可以在配置中禁用检查:

    // .eslintrc.json
    
    {
      "rules": {
        // Disables the rule. You can just remove it,
        // if it is not enabled by a parent config.
        "object-shorthand": 0
      }
    }
    

    万一 TSLint公司 有一个不同的 option :

    // tslint.json
    
    {
      "rules": {
        // Disables the rule. You can just remove it,
        // if it is not enabled by a parent config.
        "object-literal-shorthand": false
      }
    }
    
        3
  •  0
  •   Gajender Singh    3 年前

    想要用键定义对象,但不能使用任何键。试试这个。

    接口图{ [键:string]:字符串|未定义 }

    const HUMAN_MAP: Map = {
      draft: "Draft",
    }
    
    export const human = (str: string) => HUMAN_MAP[str] || str