You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置TypeScript允许不同.ts文件使用重复标识符?

如何在TypeScript中允许独立文件使用重复标识符?

我把多个独立的.ts文件(未互相导入)放在同一文件夹里用于学习,每个文件都是可单独运行的项目(通过Node执行转译后的.js文件)。当前tsconfig.json配置如下:

{
  "compilerOptions": {
    "rootDir": "./ts_src",
    "outDir": "./ts_out"
  },
  "include": ["ts_src"]
}

文件夹里有ts_src/linked_list_1.ts和ts_src/linked_list_2.ts两个文件,现在出现错误:"Duplicate identifier 'ListNode'"。我希望保留相同的标识符(用来记录同类数据结构的不同版本),需要配置层面的解决方案来避免这个错误。


方案1:启用isolatedModules编译选项

在tsconfig.json的compilerOptions中添加该选项,TypeScript会将每个文件当作独立模块处理,哪怕没有导入/导出语句,也会自动隔离作用域,避免全局命名冲突。

修改后的tsconfig.json:

{
  "compilerOptions": {
    "rootDir": "./ts_src",
    "outDir": "./ts_out",
    "isolatedModules": true
  },
  "include": ["ts_src"]
}

方案2:给每个文件添加空导出语句

如果不想修改编译配置,可以在每个独立.ts文件的末尾加一行空导出,强制将文件转为模块作用域,标识符就会被限制在各自文件内:

// 在linked_list_1.ts和linked_list_2.ts末尾添加
export {};

方案3:使用项目引用拆分独立项目

如果后续文件数量增多,可将每个独立项目拆成子文件夹,每个子文件夹配自己的tsconfig.json,通过主配置文件统一管理:

目录结构示例

├── ts_src/
│   ├── linked_list_1/
│   │   ├── index.ts
│   │   └── tsconfig.json
│   └── linked_list_2/
│       ├── index.ts
│       └── tsconfig.json
└── tsconfig.json

主tsconfig.json配置

{
  "files": [],
  "references": [
    { "path": "./ts_src/linked_list_1" },
    { "path": "./ts_src/linked_list_2" }
  ]
}

每个子项目的tsconfig.json可独立配置,命名空间完全隔离,编译时用tsc --build命令批量处理即可。

内容的提问来源于stack exchange,提问作者drenl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:11:17