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

如何让TypeScript编译器保留模板字面量?

问题描述

我有如下TypeScript代码:

return `Invalid input. ${guessesRemainingText}`;

编译后生成的JavaScript代码被转成了:

return "Invalid input. ".concat(guessesRemainingText);

请问是否有办法让TypeScript编译器完整保留模板字面量?以下是我的tsconfig.json配置:

{
  "compilerOptions": {
    "allowImportingTsExtensions": true,
    "lib": ["ES6"],
    "rewriteRelativeImportExtensions": true,
    "types": ["node"]
  },
  "include": ["src/**/*"]
}
解决方案

问题出在你没明确设置compilerOptions里的target选项。TypeScript默认编译目标是ES3,这个版本的JS不支持模板字面量,所以编译器会自动把模板字符串转成concat调用以兼容低版本环境。

要保留模板字面量,只需在tsconfig.json的compilerOptions中添加"target": "ES6"(或更高版本,比如ES2015、ES2020等)——ES6及以上版本原生支持模板字面量。修改后的配置如下:

{
  "compilerOptions": {
    "allowImportingTsExtensions": true,
    "lib": ["ES6"],
    "target": "ES6",
    "rewriteRelativeImportExtensions": true,
    "types": ["node"]
  },
  "include": ["src/**/*"]
}

设置完成后,编译器就会直接保留模板字面量写法,不会再转成concat形式。

注意:lib选项仅指定编译时可用的API库,不影响语法编译目标,语法目标由target选项控制,两者需配合使用才能达到预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 06:47:27