Ошибка синтаксического анализа ESlint «Неожиданный токен» в операторе приведения TypeScript «as» - PullRequest
1 голос
/ 05 марта 2020

В любом случае оператор as указывает [eslint] [E] Parsing error: Unexpected token, expected ";", указывая на место as. Пример кода:

{error && <small className="invalid-feedback">{(error as any).message}</small>}

Это приведение к any является обходным решением для некоторой ошибки в функции react-hooks-form useFormContext.

Когда я игнорирую ошибку и компилирую приложение все работает нормально.

Это происходит в стандартном неэкспонированном приложении Create React с последними сценариями TypeScript и response-scripts:

$ npm list -dev -depth 0
frontend@0.1.0 
├── eslint-plugin-flowtype@3.13.0
├── react-hot-loader@4.12.19
├── react-scripts@3.4.0
└── typescript@3.8.2

AFAIK, кроме автоматически сгенерированных файлов конфигурации нет, tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react"
  },
  "include": [
    "src"
  ]
}

Есть идеи, почему это происходит?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Почему бы вам не использовать

const bar:any = foo;
0 голосов
/ 05 марта 2020

Я обнаружил, что источником проблемы является неверная конфигурация Co c (модуль intellisense для Vim8 & Neovim) и его окружения. Он использовал неправильную ( old ) установку eslint извне моего проекта. Мне пришлось исправить PATH и убедиться, что папки рабочего пространства правильно обнаружены.

EDIT : react-scripts приложение с поддержкой TypeScript добавлено npm install --save typescript @types/node @types/react @types/react-dom @types/jest не готов к линтингу исходных файлов .ts [x] от eslint. Нужно вручную настроить его. Я использовал это руководство: https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/README.md и придумал следующий конфиг (.eslintrc.json):

{
    "extends": [
        "standard",
        "plugin:react/recommended",
        "plugin:@typescript-eslint/eslint-recommended",
        "plugin:@typescript-eslint/recommended"
    ],
    "parser": "@typescript-eslint/parser",
    "plugins": [
        "@typescript-eslint"
    ],
    "settings": {
        "react": {
            "pragma": "React",
            "version": "detect",
            "flowVersion": "0.53"
        }
    },
    "overrides": [
        {
            "files": ["*.js", "*.jsx"],
            "rules": {
                "@typescript-eslint/explicit-function-return-type": "off"
            }
        }
    ]
}

, который, вероятно, потребует большой настройки.

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