前端开发小技巧 - 【TS + Vue3】- 给组件添加类型

前言

  • 添加组件类型的方式有两种:
    • 局部组件
    • 全局组件、自动注册组件

一、局部组件

  • 显性导入组件 ,会 自动推导组件类型
  • 就是使用 import xxx from 'xxx'; 这种方式导入组件,就会有类型提示;
  • 但是如果我们使用组件的 自动注册插件 的话,是 没有类型提示 的;

二、全局组件、自动注册组件

  • 没有显性导入组件,需要 添加全局组件类型

2.1 声明 类型声明文件

  • 文件位置
    • src/types/components.d.ts

2.2 固定语法

ts 复制代码
// 1.导入组件
import xxx from 'xxx';

// 2.固定写法
// 用来扩展Vue模块下的类型
declare module 'vue' {
  // 如果想扩展一个全局组件类型的话,就必须在 GlobalComponents 下面扩展(固定写法);
  interface GlobalComponents {
    // 添加组件类型
    // 导入的组件是个对象,可以使用 typeof 操作符得到组件具体的类型,再将类型给 组件 去使用
    // typeof 在 TypeScript 中用于获取 变量 活 对象 的类型,因此操作符后面跟的始终是一个变量
    组件名称: typeof 组件名称;
  }
}

2.3 示例展示

ts 复制代码
import CpNavBar form '@/component/CpNavBar/index.vue';

declare module 'vue' {
  interface GlobalComponents {
    CpNavBar: typeof CpNavBar;
  }
}
相关推荐
RoyLin几秒前
TypeScript设计模式:适配器模式
前端·后端·node.js
遂心_22 分钟前
深入理解 React Hook:useEffect 完全指南
前端·javascript·react.js
Moonbit24 分钟前
MoonBit 正式加入 WebAssembly Component Model 官方文档 !
前端·后端·编程语言
龙在天29 分钟前
ts中的函数重载
前端
卓伊凡44 分钟前
非常经典的Android开发问题-mipmap图标目录和drawable图标目录的区别和适用场景实战举例-优雅草卓伊凡
前端
前端Hardy1 小时前
HTML&CSS: 谁懂啊!用代码 “擦去”图片雾气
前端·javascript·css
前端Hardy1 小时前
HTML&CSS:好精致的导航栏
前端·javascript·css
天下无贼1 小时前
【手写组件】 Vue3 + Uniapp 手写一个高颜值日历组件(含跨月补全+今日高亮+选中状态)
前端·vue.js
我是天龙_绍1 小时前
🔹🔹🔹 vue 通信方式 eventBus
前端
一个不爱写代码的瘦子2 小时前
迭代器和生成器
前端·javascript