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

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.xdnf.cn/news/19112.html

相关文章:

  • RabbitMQ 和 Kafka
  • github同一台电脑支持两个或以上的ssh账户(macos或Linux系统),解决Key is already in use问题
  • 苍穹外卖Day7 | 缓存商品、购物车、SpringCache、缓存雪崩、缓存套餐
  • DVWA靶场通关笔记-CSRF(Impossible级别)
  • VMware 设置 Ubuntu 虚拟机桥接模式完整教程
  • Java进阶教程之多线程与并发编程
  • 33. 包装类型是什么?基本类型和包装类型有什么区别?
  • 深入解析 Java interrupt
  • 从零开始部署 Kubernetes Dashboard:可视化管理你的集群
  • 不惧和谐,永不失效!!
  • 高并发内存池(19)-用基数树优化
  • JavaScript事件
  • FastAPI 入门科普:下一代高性能 Python Web 框架
  • 顶点 (VS)vs 片段(FS):OpenGL纹理滚动着色器的性能博弈与设计哲学
  • Shader开发(十八)实现纹理滚动效果
  • 【基础知识】互斥锁、读写锁、自旋锁的区别
  • 控制系统仿真之PID校正-PID校正(八)
  • 动手实现多元线性回归
  • 医疗 AI 的 “破圈” 时刻:辅助诊断、药物研发、慢病管理,哪些场景已落地见效?
  • 鸿蒙FA/PA架构:打破设备孤岛的技术密钥
  • Mysql基本语句(二)
  • 解决 jsdelivr CDN不可用问题
  • GTSAM中gtsam::LinearContainerFactor因子详解
  • Acrobat Pro DC 2025安装包下载及详细安装教程,PDF编辑器永久免费中文版(稳定版安装包)
  • Android 短信验证码输入框实现
  • 嵌入式Linux驱动开发:定时器驱动
  • 北斗传输采集数据的自定义通信协议
  • 香港电讯创新解决方案,开启企业数字化转型新篇章
  • CollageIt:简单易用的照片拼贴工具
  • Spring boot 启用第二数据源