← [ BACK_TO_NOTES ]

TypeScript 中的 module

说明 tsconfig 里的 module 主要控制什么模块格式被输出,以及为什么它经常和 moduleResolution 一起出现但不等价。

#dev #typescript #concept #growing

[!info] related notes

TypeScript 中的 module

一句话定义

module 主要决定 TypeScript 输出的 JavaScript 会采用什么模块格式。

核心机制 / 工作原理

它回答的是:

这段 TypeScript 最终 emit 成什么模块形态。

例如:

  • commonjs 更偏 require / module.exports
  • esnext 更偏保留 import / export
  • nodenext 则要结合现代 Node 的双模块系统来决定每个文件如何输出

最小例子 / 最小场景

CommonJS

{
  "compilerOptions": {
    "module": "commonjs"
  }
}

ES Modules

{
  "compilerOptions": {
    "module": "esnext"
  }
}

边界与易混淆点

module 不负责“怎么找模块”

它主要管输出格式,不等于模块解析算法本身。

module 也不负责“这个文件算不算模块文件”

这层更接近:

但 module 又会反过来影响解析条件

尤其在 nodenext / node16 这类模式里,最终输出会是 import 还是 require,会进一步影响 package exports 的条件选择。

参考信息

创建于 2026/5/15 更新于 2026/7/15
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本