eslint 7 说支持 ES2020 了,怎么还报错呢?

发布于 2022-09-13 00:09:13 字数 1267 浏览 19 评论 0

  • ES2020 支持类的私有属性,示例代码如下:
// calc.js
class Rectangle {
  #w = 0;
  #h = 0;

  constructor(width, height) {
    this.#w = Number(width);
    this.#h = Number(height);
  }
  
  get area() {
    return this.#w * this.#h;
  }

  get perimeter() {
    return 2 * (this.#w + this.#h);
  }
}
  • 命令行执行 npm install eslint,看到安装的 eslint 版本是 7.28
  • 搞一个 .eslintrc.json 配置文件如下:
{
  "parserOptions": {
    "ecmaVersion": 11
  },
  "env": {
    "browser": true,
    "jquery": true
  },
  "extends": "eslint:recommended",
  "rules": {
    "indent": [
      "error",
      2,
      {
        "SwitchCase": 1,
        "VariableDeclarator": {"var": 2, "let": 2, "const": 3}
      }
    ],
    "linebreak-style": [
      "error",
      "unix"
    ],
    "quotes": [
      "error",
      "single"
    ],
    "semi": [
      "error",
      "always"
    ],
    "no-console": [
      "error",
      { "allow": ["error"] }
    ]
  }
}
  • 执行命令 npx eslint calc.js,结果报错如下:
/home/wangding/rep/rectangle/calc.js
  3:3  error  Parsing error: Unexpected character '#'

✖ 1 problem (1 error, 0 warnings)

这个怎么解决啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一抹淡然 2022-09-20 00:09:13

首先,Private Class Fields 这一特性目前仍是草案,虽有部分浏览器支持了,但并非 ES 标准。

所谓的 ES2020 支持,其实是指它在制订 ES2020 期间被提出,但争议很大(甚至你能看到一些 TC39 成员呼吁要废止 proposal-class-fields),到目前尚处于 stage-3 阶段(即 Candidate 阶段),尚有变动的较大可能。

其次,ESlint 本身只支持 stage-4 阶段的特性(即 Finished 阶段)。

最后,ESlint 官方会推荐你使用 babel-eslint,以支持更多的实验性特性。


【附】ES 草案各阶段:

  • stage-0/Strawperson:潜在的可能被纳入规范的一些想法。
  • stage-1/Proposal:为该想法设想一些适用场景、可能的用例,提出解决实现方案以及可能的变更。
  • stage-2/Draft:经过上一步验证讨论后,这一阶段开始起草语言层面的语义语法,准备正式的规范文档。
  • stage-3/Candidate:提案进入到了候选阶段。开始接收一些反馈对提案进行完善。
  • stage-4/Finished:可以被纳入到正式的 ECMAScript 语言规范中了。

https://stackoverflow.com/que...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文