ESLint: Почему Symbol не определен (правило no-undef)? - PullRequest
0 голосов
/ 22 сентября 2019

В проекте Typescript, который я недавно настроил, я получил Babel для компиляции своего кода Typescript.Я также использую @typescript-eslint в качестве линтера.До сих пор он работал хорошо до недавнего времени, когда я пытался использовать Symbol в своем коде.

По какой-то причине Typescript (или Babel) не может распознатьSymbol и выдает мне ошибку, Symbol is not defined.

Вот как выглядит мой eslintrc:

{
  "parser": "@typescript-eslint/parser",
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "prettier/@typescript-eslint",
    "plugin:prettier/recommended"
  ],
  "parserOptions": {
      "ecmaVersion": 2018,
      "sourceType": "module"
  },
  "plugins": [
      "@typescript-eslint/eslint-plugin"
  ]
}

И в моем babelrc я имею следующее:

{
  "presets": [
    [
      "@babel/preset-env"
    ],
    ["@babel/preset-typescript"]
  ],
  "plugins": [
    "@babel/plugin-transform-modules-commonjs",
    [
      "@babel/plugin-transform-runtime",
      {
        "corejs": 2
      }
    ]
  ]
}

Почему это происходит и как я могу это исправитьэтот вопрос?

1 Ответ

2 голосов
/ 23 сентября 2019

Если вы установите "ecmaVersion": 2018 в "parserOptions", ESLint поддерживает только ES2018 синтаксис .Для глобалов ES6, таких как Symbol, необходимо указать env (включает автоматическую поддержку синтаксиса ES6, если не указано выше):

.eslintrc.json:

{ "env": { "es6": true } }

Имеетвзгляните на их документы :

По тому же признаку поддержка синтаксиса ES6 - это не то же самое, что поддержка новых глобалов ES6 (например, новых типов, таких как Set).Для синтаксиса ES6 используйте { "parserOptions": { "ecmaVersion": 6 } }; для новых глобальных переменных ES6, используйте { "env": { "es6": true } }.{ "env": { "es6": true } } включает синтаксис ES6 автоматически, но { "parserOptions": { "ecmaVersion": 6 } } не включает глобалы ES6 автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...