如何配置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
相关产品推荐
相关产品推荐

