簡體   English   中英

ESlint 和 object 在 function 或 const 中傳播運算符,為什么抱怨?

[英]ESlint and the object spread operator inside a function or a const, why is complaining?

ESLint

解析錯誤:意外的令牌...

老實說,我不明白為什么 ESlint 為第一個console.log語句而不是第二個語句添加錯誤:

const generateCss = () => {
  console.log({...{foo: 'bar'}});
};

function bar() {
  console.log({...{foo: 'bar'}});
}

有什么解釋還是我的錯?

ESlint (v7.2.0) 配置:

{
  "extends": "eslint:recommended",
    "env": {
      "es6": true,
      "node": true,
      "mocha": true
    },
    "parserOptions": {
      "ecmaVersion": 6,
      "sourceType": "module"
    },
    "rules": {
      "array-bracket-spacing": "warn",
      "arrow-parens": ["warn", "as-needed"],
      "arrow-spacing": "warn",
      "brace-style": "warn",
      "comma-spacing": "warn",
      "computed-property-spacing": "warn",
      "consistent-return": "warn",
      "curly": ["warn", "all"],
      "eol-last": "warn",
      "eqeqeq": "warn",
      "func-call-spacing": "warn",
      "indent": ["warn", 2, {
        "SwitchCase": 1
      }],
      "key-spacing": ["warn"],
      "new-cap": "warn",
      "new-parens": "warn",
      "no-multiple-empty-lines": ["warn", {
        "max": 1
      }],
      "no-nested-ternary": "warn",
      "no-return-assign": ["warn", "always"],
      "no-trailing-spaces": "warn",
      "no-unneeded-ternary": "warn",
      "no-var": "warn",
      "object-curly-spacing": ["warn", "always"],
      "padded-blocks": ["warn", "never"],
      "prefer-const": "warn",
      "quote-props": ["warn", "as-needed"],
      "quotes": ["warn", "single"],
      "semi-spacing": "warn",
      "space-before-blocks": ["warn", "always"],
      "space-before-function-paren": ["warn", {
        "anonymous": "always",
        "asyncArrow": "always",
        "named": "never"
      }],
      "space-in-parens": "warn",
      "space-infix-ops": ["warn", {
        "int32Hint": true
      }],
      "space-unary-ops": "warn",
      "spaced-comment": ["warn", "always"],
      "yoda": ["warn", "always", {
        "onlyEquality": true
      }]
    }
}

正如對答案的評論中提到的,Object spread 是在 ES2018 中引入的。

因此,如果您使用更現代的 ES 功能,請記住為此更新配置中的"ecmaVersion" 在這種情況下,您需要"ecmaVersion": 9

參考這里是完整列表:

ES3 -> 3
ES5 -> 5
ES2015 -> 6
ES2016 -> 7
ES2017 -> 8
ES2018 -> 9
ES2019 -> 10
ES2020 -> 11

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM