TypeScript 模块扩展

TypeScript 支持你"扩展现有模块的类型定义 ",这称为 模块扩展(Module Augmentation),常见于:

  • 为第三方库添加缺失的类型定义

  • 扩展现有模块的接口或类型

  • 使用 declare module 'xxx' 扩展模块内容

❗ 为什么要"放在模块中"?

如果你写了 declare module 'xxx' {...}

  • ✅ 如果这个文件是一个模块(有 export {}),那么你写的东西是"扩展"原模块。
  • ❌ 如果这个文件是 script(无 import/export),那它就是"声明一个全新的模块",会覆盖原来的类型

✅ 示例:正确扩展模块

typescript 复制代码
// example.d.ts
export {}; // 👈 让这个文件成为模块!

declare module 'vue' {
  interface ComponentCustomProperties {
    $trans: (key: string) => string;
  }
}

✅ 这样,TypeScript 会将你的扩展 合并'vue' 原来的类型中。


❌ 示例:错误用法(会覆盖原模块)

typescript 复制代码
// example.d.ts
// ❌ 没有 export/import,这会变成全局 script

declare module 'vue' {
  interface ComponentCustomProperties {
    $trans: (key: string) => string;
  }
}

这样会导致 TypeScript 认为你声明的是整个模块的完整定义 ,原有类型就会被完全替换掉,造成类型错误或丢失。


✅ 总结一句话:

如果你想扩展 TypeScript 中的已有模块,记得把扩展代码放在一个模块文件里(至少写个 export {},否则它就不是"扩展",而是"覆盖"了!

相关推荐
这是个栗子21 分钟前
【Vue代码分析】 import.meta.env.DEV:现代前端工程中的环境变量
前端·javascript·vue.js·环境变量
乌夷4 小时前
Vue.js 3 的设计思路
前端·javascript·vue.js
前端之虎陈随易13 小时前
编程语言级别的Skill市场,AI Agent 的未来形态
前端·vue.js·人工智能·typescript·node.js
格子软件16 小时前
2026年GEO贴牌代理:分布式多级分账状态机源码深度解构
java·vue.js·分布式·vue·geo
之歆16 小时前
Vue商品详情与放大镜组件
前端·javascript·vue.js
奶油mm1 天前
公司技术债堆积如山,我一人之力用 Vue3 偷换了整个前端架构
前端·vue.js
格子软件1 天前
2026年分布式GEO代理流量调度:源码级状态机防重挂实战
java·vue.js·人工智能·spring boot·分布式·vue
后台开发者Ethan1 天前
类型分类、联合类型、交叉类型
typescript
鹰影471 天前
一款AI笔记助手和远程同步的markdown笔记idea-note
人工智能·笔记·rust·typescript·react
想你依然心痛1 天前
AtomCode 在前端开发中的实战体验:React + TypeScript 项目开发实录
前端·react.js·typescript