关于vue3+ts的公共组件库的类型处理

全局注册组件

1.新建文件components/index.ts

import type { App, Plugin } from 'vue'  //这里的是插件的类型
import Skeleton from './Skeleton/Skeleton.vue'

const UserUI: Plugin = {
  install(app: App) {

// 全局注册组件
    app.component(`XtxSkeleton`, Skeleton);
  },
};

export default UserUI;

2.在main.ts中全局注册

 

3.在页面中使用  

  • 🐛问题:全局组件注册成功,但是调用时没有 TS 类型提示。

  • 解决方案:为组件库创建对应的类型声明文件。

 

参考链接:https://github.com/element-plus/element-plus/blob/dev/global.d.ts

               https://github.com/johnsoncodehk/volar/blob/master/extensions/vscode-vue-language-features/README.md

需要在公共组件库下创建一个专门用于类型声明文件global.d.ts

// 全局组件类型声明文件 for Volar
declare module 'vue' {
  // 全局组件需要定义 interface GlobalComponents

//volar内部通过GlobalComponents 接口去进行类型处理的
  export interface GlobalComponents { 
     全局组件名: 组件类型;
  }
}

export { }

 注意:需要导入 .vue 源文件   typeof 指定类型

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3是一种流行的JavaScript框架,而TypeScript是一种类型安全的JavaScript超集。结合使用Vue3和TypeScript可以提供更好的开发体验和代码可维护性。 在Vue3中,可以使用TypeScript来编写组件。下面是一个简单的Vue3+TypeScript评论组件的示例: ```typescript <template> <div> <h2>评论列表</h2> <ul> <li v-for="comment in comments" :key="comment.id"> {{ comment.text }} </li> </ul> <form @submit.prevent="addComment"> <input type="text" v-model="newComment" placeholder="请输入评论" /> <button type="submit">添加评论</button> </form> </div> </template> <script lang="ts"> import { defineComponent, ref } from 'vue'; interface Comment { id: number; text: string; } export default defineComponent({ name: 'CommentComponent', data() { return { comments: [] as Comment[], newComment: '', }; }, methods: { addComment() { const newId = this.comments.length + 1; this.comments.push({ id: newId, text: this.newComment }); this.newComment = ''; }, }, }); </script> ``` 在上面的示例中,我们定义了一个名为`CommentComponent`的Vue组件组件包含一个评论列表和一个表单用于添加新的评论。`comments`数组用于存储评论数据,`newComment`变量用于绑定输入框的值。 通过使用`defineComponent`函数和`ref`函数,我们可以定义组件的数据和方法,并将其导出供其他组件使用。 相关问题: 1. Vue3是什么? 2. TypeScript在Vue3中的作用是什么? 3. 请解释一下Vue3+TypeScript评论组件的代码逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值