{
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "Node",
    "resolveJsonModule": true,
    "useDefineForClassFields": true,

    // Required in Vue projects
    "jsx": "preserve",
    "jsxImportSource": "vue",

    // `"noImplicitThis": true` is part of `strict`
    // Added again here in case some users decide to disable `strict`.
    // This enables stricter inference for data properties on `this`.
    "noImplicitThis": true,
    "strict": true,
    // 解决 JSX 元素隐式具有类型 "any"，因为不存在接口 "JSX.IntrinsicElements"
    // "noImplicitAny": false,

    // Required in Vite
    "isolatedModules": true,
    // For `<script setup>`
    // See <https://devblogs.microsoft.com/typescript/announcing-typescript-4-5-beta/#preserve-value-imports>
    // Enforce using `import type` instead of `import` for types
    "verbatimModuleSyntax": true,

    // A few notes:
    // - Vue 3 supports ES2016+
    // - For Vite, the actual compilation target is determined by the
    //   `build.target` option in the Vite config.
    //   So don't change the `target` field here. It has to be
    //   at least `ES2020` for dynamic `import()`s and `import.meta` to work correctly.
    // - If you are not using Vite, feel free to override the `target` field.
    "target": "ESNext",

    // Recommended
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    // See <https://github.com/vuejs/vue-cli/pull/5688>
    "skipLibCheck": true,

    "lib": ["esnext", "DOM", "DOM.Iterable"],

    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"],
      "@assets/*": ["src/common/assets/*"],
      "@api/*": ["src/common/api/*"],
      "@config/*": ["src/common/config/*"],
      "@directives/*": ["src/common/directives/*"],
      "@enums/*": ["src/common/enums/*"],
      "@http/*": ["src/common/http/*"],
      "@languages/*": ["src/common/languages/*"],
      "@styles/*": ["src/common/styles/*"],
      "@utils/*": ["src/common/utils/*"],
      "@components/*": ["src/components/*"],
      "@composables/*": ["src/composables/*"],
      "@pinia/*": ["src/pinia/*"],
      "@router/*": ["src/router/*"],

      // 支持提示 index.ts
      "@assets": ["src/common/assets"],
      "@api": ["src/common/api"],
      "@config": ["src/common/config"],
      "@directives": ["src/common/directives"],
      "@enums": ["src/common/enums"],
      "@http": ["src/common/http/*"],
      "@languages": ["src/common/languages"],
      "@styles": ["src/common/styles"],
      "@utils": ["src/common/utils"],
      "@components": ["src/components"],
      "@composables": ["src/composables"],
      "@pinia": ["src/pinia"],
      "@router": ["src/router"]
    },
    "types": ["element-plus/global", "node"]
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "vite.config.mts"],
  "exclude": ["node_modules", "dist", "**/.*"]
}
