← [ BACK_TO_NOTES ]

TypeScript 中的 moduleSuffixes

说明 moduleSuffixes 如何调整 TypeScript 解析模块时尝试的文件后缀列表,以及它为什么常见于 React Native 等多平台源码布局。

#dev #typescript #concept #growing

[!info] related notes

TypeScript 中的 moduleSuffixes

一句话定义

moduleSuffixes 用来覆盖 TypeScript 解析模块时尝试的文件名后缀顺序。

核心机制 / 工作原理

官方文档的定义很直接:

  • override the default list of file name suffixes to search when resolving a module

例如:

{
  "compilerOptions": {
    "moduleSuffixes": [".ios", ".native", ""]
  }
}

当代码写:

import * as foo from "./foo";

TypeScript 就会按顺序尝试:

  • ./foo.ios.ts
  • ./foo.native.ts
  • ./foo.ts

官方文档还特别提醒:

  • 最后的空字符串 "" 很重要
  • 没有它,TypeScript 就不会再回退到普通 ./foo.ts

最小例子 / 最小场景

它最常见于:

  • React Native 多平台文件命名
  • 不同目标环境使用不同源码后缀

边界与易混淆点

它不等于 alias

它不负责把某个 import 前缀映射到另一个目录,只负责:

  • 同一路径名下,优先尝试哪些后缀版本

它属于模块解析顺序的细化

因此它更接近:

而不是输出结构选项。

忘记写 "" 是常见坑

如果想保留对普通文件名的回退能力,空字符串通常必须显式写上。

参考信息

创建于 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
关闭浮层 / 取消命令;输入框内清空文本