tsgolint v7支持59条类型规则,检查提速12至18倍
tsgolint v7已从实验阶段进入稳定发布,成为Oxlint处理TypeScript类型感知检查的后端。这类规则需要理解完整程序语义,例如判断Promise是否经过await,而不是仅分析单个文件。tsgolint基于TypeScript官方Go移植版typescript-go构建真实的TypeScript程序,并跟进TypeScript 7.0.2;目前已支持typescript-eslint 61条类型感知规则中的59条,明显高于去年12月Alpha版本的43条。
Oxlint由Rust编写,负责文件发现、配置解析及低成本语法规则,再把需要类型信息的任务交给Go二进制程序,最后接收结构化诊断结果。安装后可通过“pnpm add -D oxlint oxlint-tsgolint@7”和“pnpm oxlint --type-aware”启用。增加“--type-check”后,同一个TypeScript程序还能同时报告编译器错误;这些选项也可以写入oxlint.config.ts或.oxlintrc.json。新增的“--debug”参数支持显示单条规则耗时,便于定位性能瓶颈。
在搭载Apple M4 Pro的测试设备上,稳定版检查microsoft/vscode、microsoft/typescript、typeorm和vuejs/core的速度,是ESLint配合typescript-eslint的12至18倍。支持者认为,与tsgo保持一致后,工具可以继承TypeScript团队后续的编译器优化,同时保持接近typescript-eslint的规则覆盖范围。
这一技术路线也引发了与Biome方案的比较。Biome v2没有直接依赖编译器,而是自行推导类型;一项分析称,其noFloatingPromises规则只能覆盖typescript-eslint发现问题的大约75%,这一差距也曾被Vite创始人Evan You公开质疑。最初原型由typescript-eslint贡献者auvred创建,但该项目分支目前仍被称为“没有积极开发”的实验。与此同时,oxc侧的正确性还在改进,已有用户报告自动修复误删tsc实际需要的类型断言。
现有ESLint配置可用“npx @oxlint/migrate --type-aware”转换。迁移前需注意,类型感知检查要求TypeScript 7.0或更高版本,不支持baseUrl等部分旧版tsconfig选项;依赖已从TypeScript 6移除功能的项目,也必须先完成迁移。
版本号从实验性的0.x直接跳到v7,是为了让tsgolint版本与内置编译器对应,例如v7.0.2000代表TypeScript 7.0.2。后续工作包括补齐剩余规则、完善编辑器集成和优化Monorepo性能。Oxlint属于oxc Rust工具链,由Evan You创办的VoidZero团队推动;这次发布也体现了打包器、格式化工具和TypeScript编译器等前端基础设施持续采用原生语言重写的趋势。
本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。
阅读原文