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

如何将TypeScript的CompilerOptions对象转为合法tsconfig.json格式?是否有反向转换API?

将TypeScript CompilerOptions对象转换为tsconfig.json格式的方法

TypeScript官方并未提供直接的反向转换函数,但可以通过手动映射枚举值的方式实现需求——把CompilerOptions中的枚举类型值转换成tsconfig.json要求的字符串字面量,其他类型的配置直接保留即可。

核心实现思路

利用TypeScript枚举的反向映射特性(枚举值可以反向获取对应的枚举名称),将ScriptTarget、ModuleKind这类枚举值转换为对应的字符串,再统一转成小写(符合tsconfig.json的命名惯例),非枚举类型的配置项直接复制。

示例代码

import * as ts from 'typescript';

function convertCompilerOptionsToTsConfig(options: ts.CompilerOptions): Record<string, unknown> {
  const tsConfig: Record<string, unknown> = {};

  // 处理枚举类型配置项
  if (options.target !== undefined) {
    tsConfig.target = ts.ScriptTarget[options.target].toLowerCase();
  }
  if (options.module !== undefined) {
    tsConfig.module = ts.ModuleKind[options.module].toLowerCase();
  }
  if (options.moduleResolution !== undefined) {
    tsConfig.moduleResolution = ts.ModuleResolutionKind[options.moduleResolution].toLowerCase();
  }

  // 复制非枚举类型的配置项(可根据实际需求补充更多键)
  const nonEnumConfigKeys = ['esModuleInterop', 'strict', 'outDir', 'rootDir', 'declaration'] as const;
  nonEnumConfigKeys.forEach(key => {
    if (options[key] !== undefined) {
      tsConfig[key] = options[key];
    }
  });

  return tsConfig;
}

// 使用示例
const inputOptions: ts.CompilerOptions = {
  target: ts.ScriptTarget.ES2022,
  esModuleInterop: true,
  module: ts.ModuleKind.CommonJS,
  moduleResolution: ts.ModuleResolutionKind.NodeJs,
};

// 转换为tsconfig格式对象
const tsConfigObj = convertCompilerOptionsToTsConfig(inputOptions);
// 转换为格式化的JSON字符串(可直接写入tsconfig.json)
const tsConfigJson = JSON.stringify(tsConfigObj, null, 2);

console.log(tsConfigJson);

输出结果

运行上述代码后,会生成符合tsconfig.json规范的字符串:

{
  "target": "es2022",
  "module": "commonjs",
  "moduleResolution": "nodejs",
  "esModuleInterop": true
}

注意事项

如果你的CompilerOptions包含更多枚举类型的属性(比如jsx、lib对应的枚举),需要手动补充对应的映射逻辑,确保每个枚举值都能转换为正确的字符串字面量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:42:47