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

寻求可批量添加@ts-expect-error注释忽略TS严格模式错误的codemod

如何自动给TypeScript严格模式下的所有报错添加// @ts-expect-error注释

方法一:使用ts-migrate工具

ts-migrate是专门用于TypeScript迁移的工具集,其中包含自动添加@ts-expect-error注释的fixer,完全匹配你的需求:

  1. 全局安装ts-migrate:
npm install -g ts-migrate
  1. 在tsconfig.json中启用strict: true模式;
  2. 在项目根目录运行以下命令,给所有TS错误位置添加指定注释:
ts-migrate fix --fixers expect-error .

默认生成的注释可通过自定义配置修改为你需要的内容:// @ts-expect-error this one appeared after introducing strict mode, please fix it。

方法二:自定义TypeScript Compiler API脚本

如果需要更灵活的控制,可以基于TypeScript的Compiler API写一个简单脚本,批量插入注释:

const ts = require('typescript');
const fs = require('fs');
const path = require('path');

// 配置项目根目录和tsconfig路径
const projectRoot = './';
const configFilePath = ts.findConfigFile(projectRoot, ts.sys.fileExists);
if (!configFilePath) {
  console.error('无法找到tsconfig.json文件');
  process.exit(1);
}

// 读取并配置TS编译程序
const config = ts.readConfigFile(configFilePath, ts.sys.readFile).config;
const program = ts.createProgram({
  rootNames: config.include || ['./src/**/*'],
  options: { ...config.compilerOptions, strict: true }
});

// 获取所有编译诊断错误
const diagnostics = ts.getPreEmitDiagnostics(program);

// 遍历错误并插入注释
diagnostics.forEach(diag => {
  if (diag.file && diag.start !== undefined) {
    const filePath = diag.file.fileName;
    const sourceContent = fs.readFileSync(filePath, 'utf8');
    const lines = sourceContent.split('\n');
    const { line } = diag.file.getLineAndCharacterOfPosition(diag.start);
    
    // 避免重复插入注释
    if (!lines[line].includes('@ts-expect-error')) {
      lines.splice(line, 0, `// @ts-expect-error this one appeared after introducing strict mode, please fix it`);
      fs.writeFileSync(filePath, lines.join('\n'));
    }
  }
});

使用说明:

  • 确保项目已安装typescript依赖:npm install typescript --save-dev
  • 将脚本保存为add-expect-error.ts,运行:node add-expect-error.ts
  • 注意:脚本会直接修改文件,建议先备份或提交当前代码后再执行

关键注意事项

  • 优先使用@ts-expect-error而非@ts-ignore:前者会在错误修复后触发TS提示,提醒你移除多余注释,更适合逐步清理旧代码
  • 运行工具后,建议先提交添加了注释的代码,再按模块逐步修复标记的错误,避免一次性处理大量变更

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 06:35:56