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

为什么TypeScript编译器会将const编译为var?

TypeScript 编译将 const 转换为 var 的核心原因

这个行为是TS编译器的语法降级+类型擦除机制共同作用的结果,属于符合设计逻辑的默认行为,和编译错误无关:

  • 默认编译目标版本过低
    你直接执行tsc consts.ts时,没有提供tsconfig.json配置文件,也没有通过--target参数指定编译输出的JS标准版本,TSC会默认使用低版本ECMAScript标准(ES3/ES5)作为编译目标。const是ES2015(ES6)才正式纳入标准的块级常量声明语法,ES3、ES5标准中不存在该语法,为了保证编译产出的代码可以在仅支持低版本标准的老旧运行环境(比如IE8及更早版本、0.12之前的Node.js版本)中正常运行,编译器会自动将const声明转换为目标环境支持的var声明。
  • 类型标注被自动擦除
    代码里写的: string是TypeScript独有的静态类型标注,只在编译阶段做类型校验使用,JavaScript运行时本身不识别这类TS专属语法,因此编译时会被完全擦除,不会出现在最终的JS文件中。

如果你需要保留const写法,只需要在编译时指定支持const语法的目标版本即可,比如执行命令:
tsc --target ES2015 consts.ts
编译后生成的JS文件就会保留const s1 = 'test'的原始声明写法,不会再转换为var。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:36:23