ant design vue 实现组件类型推断 vue3,vite,ts

1,全局引入的antd vue组件是没有代码提示的

因为全局引入的时候组件的类型已经丢失了,这时候写代码就没有这个组件的代码提示,还得去看文档

 2,如何实现全局组件类型推断

   (1),在使用的时候引入,这个不用多说,使用的时候写import就行

   (2),在全局写一个类型定义文件,这个需要使用vite的插件帮我们实现

3,实现推断

(1),使用vite的unplugin-vue-components插件帮我们实现Vue 的按需组件自动导入

https://github.com/antfu/unplugin-vue-components

(2),配置 vite.config.ts

安装完成unplugin-vue-components后配置如下:

import Components from "unplugin-vue-components/vite"; // 按需组件自动导入
import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";
// https://vitejs.dev/config/
export default ({
  mode,
}: {
  mode: "dev" | "prod" | "build" | "devbuild";
}): UserConfigExport => {
  return defineConfig({
    plugins: [
      vue(),
      vueJsx(),
      Components({
        dts: true, //生成components.d.ts 全局定义文件
        resolvers: [
          AntDesignVueResolver({ //对使用到的全局ant design vue组件进行类型导入
            importStyle: false,  // 不动态引入css,这个不强求
          }),
        ],
        include: [/\.vue$/, /\.vue\?vue/, /\.md$/, /\.tsx$/], //包含的文件类型
      })
    ],
    ....其他配置
    });
};

 (3),再次启动项目时会自动生成一个components.d.ts

 (4),有这个文件还不够,还需要在tsconfig.json配置文件中修改配置,使得vscode能正确识别类型

{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "moduleResolution": "node",
    "strict": true,
    "jsx": "preserve",
    "sourceMap": true,
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "types": ["vite/client","node"],
    "baseUrl": ".",
    "importHelpers": true,
    "skipLibCheck": true,
    "allowSyntheticDefaultImports": true,
    "paths": {
      "@/*": ["src/*","components.d.ts"],
    },
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  },
  "exclude": [
    "node_modules"
  ],
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue","main/**/*"]
}

(5)这时候就可以使用类型推断了,enjoy

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值