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

为何无导出的const enum在isolatedModules模式下未报错但转译失败?

关于isolatedModules模式下普通const enum未报错的疑问

我已经查看过相关Stack Overflow帖子,但其中的解答未能解决我的疑问。

我好奇为何以下场景似乎并未违反isolatedModules对const enum的约束:

我的tsconfig中已将isolatedModules设为true。

a.ts 内容:

const enum MyEnum {
  SomeValue
};

b.ts 内容:

console.log(MyEnum.SomeValue);

默认情况下,tsc并未提示任何错误,但转译后会出现引用错误。

据我理解,isolatedModules选项的核心作用是强制约束,确保每个文件可被转译器独立处理,无需依赖整个项目的类型信息,正是为了解决此类问题而引入。

然而,TypeScript官方文档及实际实现均提到,使用namespace和ambient const enum会违反该约束,却未提及普通const enum的情况。

我已知晓以下信息:

  • 未包含export的TypeScript文件会被视为全局脚本文件;
  • 存在moduleDetection: force选项可强制该规则;
  • 启用isolatedModules时,preserveConstEnums也会被启用,阻止const enum被内联。

我无法理解的是:为何在仅启用isolatedModules的项目中,包含const enum的无导出文件被其他文件引用时,tsc并未报错?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:03:10