В общем, товарищи, веселый вопрос нарисовался.
Надеюсь на понимание и поддержку.
Пытаюсь настроить ESLint для проекта (Laravel 11 + Vue 3 + TypeScript).
Инициализировал конфиг, немного отсебятины дописал и вышла такая вот красота:
import globals from "globals";
import pluginJs from "@eslint/js";
import tseslint from "typescript-eslint";
import pluginVue from "eslint-plugin-vue";
import eslintConfigPrettier from "eslint-config-prettier";
/** @type {import('eslint').Linter.Config[]} */
export default tseslint.config(
pluginJs.configs.recommended,
tseslint.configs.recommendedTypeChecked,
tseslint.configs.stylisticTypeChecked,
...pluginVue.configs["flat/essential"],
eslintConfigPrettier,
{
plugins: {
"@typescript-eslint": tseslint.plugin,
},
files: ["/resources/js/**/*.{js,ts,vue}"],
languageOptions: {
parserOptions: {
parser: tseslint.parser,
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
},
{
rules: {
"vue/multi-word-component-names": "off",
"no-unused-vars": "error",
"prefer-const": ["error", { ignoreReadBeforeAssign: true }],
"no-useless-escape": "off",
},
},
);
Расширение .mjs, казалось бы все, иди, пиши и радуйся жизни.
Но не тут то было.
Столкнулся с проблемой объявления интерфейсов в Vue-компонентах, а именно:
ESLint: Parsing error: The keyword 'interface' is reserved
Сталкивался ли кто с подобным?
Если да, прошу помощи, облазил уже все возможные форумы, доку прошерстил от и до, но решение не нашел.