TypeScript 中的 paths

说明 paths 如何把 import 模式映射到具体路径,以及它为什么只影响 TypeScript 解析而不会自动改写运行时 import。

#tech / dev #resource / typescript #type / concept #status / growing

[!info] related notes

TypeScript 中的 paths

一句话定义

paths 用来把特定 import 模式映射到一组明确的目标路径。

核心机制 / 工作原理

例如:

{
  "compilerOptions": {
    "paths": {
      "@/*": ["./src/*"]
    }
  }
}

这会让 TypeScript 把:

import { foo } from "@/foo";

理解成对 ./src/foo 的解析。

最小例子 / 最小场景

paths 常见于:

  • 前端项目 alias
  • monorepo 中的局部包内 alias
  • IDE 辅助解析

边界与易混淆点

paths 不会改写 emit 出来的 import

这是它最容易被误解的地方。

TypeScript 官方文档明确强调:paths 只影响解析,不会自动改写输出代码里的 import 路径。

所以如果运行时或 bundler 没配同样的 alias,常见结果是:

  • 类型检查通过
  • 运行时报错

paths 在 monorepo 里容易把别的源码拉进 program

如果 paths 直接跨包指向别人的 src,很容易引发:

  • rootDir 报错
  • 类型噪音
  • IDE 变慢

参考信息

创建于 2026/5/15 更新于 2026/5/27