你遇到的情况是 VSCode 中使用 Element Plus 时,组件的属性无法自动提示(IntelliSense 无法识别 props)。这是 Vue 3 + TypeScript 项目中常见问题。下面我整理了几种解决方案。


1. 确认项目环境

  • Vue 3 + TypeScript
  • Element Plus 最新版本
  • vue-tsc 或 Volar 插件支持
# 安装依赖
npm install element-plus
npm install -D vue-tsc

注意:如果项目是 Vue 3 + JavaScript,建议开启 Volar 的 Take Over Mode 才能获得完整提示。


2. 安装并使用 Volar 插件

  1. 在 VSCode 安装 Volar 插件(推荐 Vue 3 + TS)
  2. 禁用 Vetur(避免冲突)
  3. 配置 jsconfig.jsontsconfig.json
{
  "compilerOptions": {
    "target": "ESNext",
    "module": "ESNext",
    "moduleResolution": "Node",
    "strict": true,
    "jsx": "preserve",
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.vue"]
}


3. 确保 Element Plus 类型文件生效

Element Plus 在 TS 下提供完整类型:

// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')

.vue 文件中使用 <ElButton><el-button> 都应有属性提示


4. 在 Vue 文件中手动引入类型

如果仍无提示,可在 shims-vue.d.ts 中添加:

declare module 'element-plus' {
  import { DefineComponent } from 'vue'
  const ElButton: DefineComponent
  export { ElButton }
}

或全局声明:

import type { Component } from 'vue'
declare module 'vue' {
  export interface GlobalComponents {
    ElButton: Component
    // ...其他 Element Plus 组件
  }
}


5. 检查组件前缀

  • 使用 Volar 时,组件名区分大小写
  • <ElButton> 会有提示
  • <el-button> 默认也支持,但 TypeScript 项目建议使用 PascalCase

6. 重建 VSCode TS 服务

  1. 命令面板:Ctrl+Shift+PTypeScript: Restart TS server
  2. 重启 VSCode

✅ 总结

  • Vue 3 + TS 项目推荐使用 Volar
  • 确保 tsconfig.json 配置包含 .vue 文件
  • 引入 Element Plus 后,TS 会自动识别类型
  • 必要时手动在 shims-vue.d.tsglobalComponents 声明组件类型

明白,我帮你整理一个 完整的 Vue 3 + TypeScript + Element Plus 项目配置示例,开箱即用,并确保在 VSCode 中 所有组件属性都有 IntelliSense 提示


1. 创建项目

# 使用 Vite 创建 Vue 3 + TS 项目
npm create vite@latest my-vue-app -- --template vue-ts
cd my-vue-app
npm install


2. 安装依赖

npm install element-plus
npm install -D vue-tsc

vue-tsc 用于 TypeScript 类型检查
Element Plus 提供完整类型定义


3. 配置 VSCode

  • 安装 Volar 插件(禁用 Vetur)
  • 确保 .vue 文件能被 TS 识别

tsconfig.json 示例:

{
  "compilerOptions": {
    "target": "ESNext",
    "module": "ESNext",
    "moduleResolution": "Node",
    "strict": true,
    "jsx": "preserve",
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.vue"]
}


4. 配置全局组件类型

src/shims-vue.d.ts 添加:

/// &lt;reference types="vite/client" />

import type { Component } from 'vue'

declare module 'vue' {
  export interface GlobalComponents {
    ElButton: Component
    ElInput: Component
    ElTable: Component
    ElTableColumn: Component
    // 按需添加其他 Element Plus 组件
  }
}

这样 VSCode 可以在 .vue 文件中提示所有 props


5. 主入口引入 Element Plus

src/main.ts

import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')


6. 示例组件

src/App.vue

&lt;template>
  &lt;el-button type="primary" @click="handleClick">点击我&lt;/el-button>
&lt;/template>

&lt;script lang="ts" setup>
const handleClick = () => {
  console.log('按钮被点击')
}
&lt;/script>

✅ 在 VSCode 中,你可以看到 type="primary" 等属性的 自动提示


7. 编译检查

# 类型检查
npx vue-tsc --noEmit

确保项目类型正确,属性提示可用。


8. 注意事项

  1. 组件命名
    • Vue 3 + TS + Volar 推荐 PascalCase <ElButton>
    • 小写 <el-button> 也支持,但部分提示可能不完整
  2. 按需引入
    • 如果使用 unplugin-vue-componentsbabel-plugin-import 可实现按需引入
  3. 重启 VSCode
    • 修改配置后,执行 TypeScript: Restart TS Server