当前位置: 首页 > news >正文

components.d.ts声明组件类型的作用

全局注册组件的代码,index.ts

import LayoutBasicPage from './layout/basic-page'const components = [LayoutBasicPage,]const install = (app: App) => {for (const component of components) {// 注意全局组件必须要有name属性app.component(component.name, component)}
}

这时跟index.ts新建一个同个级别的components.d.ts

import '@vue/runtime-core'declare module '@vue/runtime-core' {// GlobalComponents for Volarexport interface GlobalComponents {LayoutBasicPage: typeof import('./layout/basic-page')['default']}
}

因为 这两段代码作用完全不同,且互不替代的

文件运行时用?给谁用?目的
index.ts会打包进最终 JSVue 运行时真正注册全局组件,让浏览器能渲染
components.d.ts编译阶段就被删除TypeScript / Volar告诉 TS「模板里写 时是合法组件,并提供类型提示」

总结:运行时注册 ≠ 编译时类型
你在 index.ts 里用 app.component(component.name, component) 把组件注册到 Vue 运行时——浏览器里可以正常渲染。

例如:

<LayoutBasicPage title="xxx" />

TypeScript 在编译阶段并不知道你运行过这段代码,因此当你在模板里写时,它会报错:
❗ Cannot find name ‘LayoutBasicPage’.
也无法提示 title 是什么类型。

http://www.dtcms.com/a/358103.html

相关文章:

  • LeetCode100-240搜索二维矩阵Ⅱ
  • linux基础——UDP、TCP
  • 北斗导航 | RAIM算法改进方案及性能对比分析报告
  • 力扣(LeetCode) ——645. 错误的集合(C语言)
  • 算法(③二叉树)
  • 精简版UDP网络编程:Socket套接字应用
  • 网格纹理采样算法
  • U盘/移动硬盘里可清理的那些跨系统遗留文件
  • 使用JAVA制作minecraft红石和创造模式插件
  • 理解JVM
  • 蓝牙5.3核心技术架构解析:从控制器到主机的无线通信设计
  • 广东省省考备考(第九十天8.30)——判断推理(强化训练)
  • 项目管理的五个阶段是什么
  • 在线简历生成工具,免费好用
  • 【MLLM】从BLIP3o到BLIP3o-NEXT:统一生成与理解
  • 【Docker】Docker初识
  • AI工具营销落地方案:工业产品营销
  • python pyqt5开发DoIP上位机【诊断回复的函数都是怎么调用的?】
  • 计算机毕设 java 阿歹果园养鸡场管理系统 基于 SSM 框架的果园养鸡场全流程管理系统设计与实现 Java+MySQL 的养殖生产与进销存一体化平台开发
  • SQLSugar 封装原理详解:从架构到核心模块的底层实现
  • uniapp解析富文本,视频无法显示问题
  • HTTP的概念、原理、工作机制、数据格式和REST
  • 卫星信号和无线信号的设备厂商
  • Linux(1)|入门的开始:Linux基本指令
  • 【C++】C++ const成员函数与取地址操作符重载
  • 数据结构 03(线性:单链表)
  • 强化学习-CH6 随机近似
  • Ansible 核心运维场景落地:YUM 仓库、SSH 公钥、固定 IP 配置技巧
  • 2025年9月计算机二级C++语言程序设计——选择题打卡Day11
  • 如何取得专案/设计/设定/物件的属性