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

vue3typescript,shims-vue.d.ts中declare module的vue声明

webpack已经有了vue-loader这些loader了,为什么还需要declare module '*.vue’呢?

declare module 是为了告诉 tsc 这是一个“模块”。
如果不声明, IDE 里因为 tsc 类型检查, lint 会标红。
但vue-loader 是在 Webpack 构建阶段使用。IDE 做智能补全提示、还有 lint 时又不用到它vue-loader

之所以搞这么复杂,就是因为 tsc 只能识别 .js、.ts、.mjs、.json 等几种后缀的文件类型,并不“认识” .vue 文件。
所以后来为了更好地支持 TypeScript 类型推断,Vue3 中专门搞了一个 vue-tsc,用来取代默认的 tsc,就不需要你手动写一堆 declare module 了。

举例1

declare module '*.vue' {import { DefineComponent } from 'vue'const component: DefineComponent<{}, {}, any>export default component
}

举例2

// my-js-module.js
function greet(name) {return 'Hello, ' + name;
}module.exports = {greet,
};

然后你在 TypeScript 项目中引入这个模块:

// main.ts
import { greet } from 'my-js-module';

为了让 TypeScript 编译器能正确理解 my-js-module 模块的类型信息,你需要创建一个名为 my-js-module.d.ts 的类型声明文件

// my-js-module.d.ts
declare module 'my-js-module' {export function greet(name: string): string;
}
http://www.lryc.cn/news/492870.html

相关文章:

  • C/C++基础知识复习(30)
  • 【NLP 1、人工智能与NLP简介】
  • 网络安全事件管理
  • Swagger记录一次生成失败
  • Go 语言常用工具方法总结
  • ThingsBoard规则链节点:GCP Pub/Sub 节点详解
  • 【Linux】select,poll和epoll
  • Qt程序发布及打包成exe安装包
  • python怎样运行js语句
  • 汽车渲染领域:Blender 和 UE5 哪款更适用?两者区别?
  • JAVA实现将PDF转换成word文档
  • 前端-Git
  • 如何分析Windows防火墙日志
  • 工作坊报名|使用 TEN 与 Azure,探索你的多模态交互新场景
  • 学习笔记041——Elastic Search的学习与使用以及SpringBoot整合
  • R安装rgdal报错 解决办法
  • 【智能制造-46】人机工程(工厂自动化)
  • C#笔记(5)
  • 【软件国产化】| Windows和Linux下文件名后缀是否区分大小写
  • 讨论JAVA、JVM与Spring
  • 【04】MySQL数据库和数据表的基本操作详解与实例
  • Spring中实现动态数据源切换,基于AbstractRoutingDataSource
  • StarRocks-join优化
  • js 高亮文本中包含的关键词标红
  • DVWA靶场——File Inclusion
  • Android Framework禁止弹出当前VOLTE不可用的提示窗口
  • OceanBase 大数据量导入(obloader)
  • w058基于web的美发门店管理系统
  • 实时数据开发 | checkpoints监控和调优
  • el-tree的使用及控制全选、反选、获取选中