TypeScript 在 ESLint 上的未来

我们很高兴 TypeScript 团队决定正式致力于改进 TypeScript ESLint 体验。推动 ESLint 兼容 TypeScript 的幕后功臣 James Henry 将与 TypeScript 团队合作开展这个新项目。我们将分享这对 ESLint 团队和 TypeScript 用户意味着什么。

几周前,TypeScript 团队分享了他们的 路线图,其中他们描述了正式在他们的仓库中采用 ESLint,并致力于改进 ESLint 的 TypeScript 兼容性。

Linting

  • ESLint 中的语义规则
    • 与 TSLint 对等
    • 速度和可扩展性
  • ESLint 的编辑器集成

在几个月前我们在 VS Code 中进行的一项调查中,我们从用户那里听到的最频繁的主题是 linting 体验不尽如人意。由于我们团队的一部分专注于 JavaScript 的编辑体验,我们的编辑器团队着手添加对 TSLint 和 ESLint 的支持。然而,我们注意到 TSLint 规则的运行方式存在一些架构问题,这些问题影响了性能。修复 TSLint 以使其更高效地运行需要不同的 API,这将破坏现有的规则(除非构建像 wotan 提供的互操作 API)。

与此同时,ESLint 已经拥有我们从 linter 中寻求的更高性能的架构。此外,不同的用户社区通常拥有为 ESLint 构建的 lint 规则(例如,React Hooks 或 Vue 的规则),而不是为 TSLint 构建的规则。

鉴于此,我们的编辑器团队将专注于利用 ESLint,而不是重复工作。对于 ESLint 当前未涵盖的场景(例如,语义 linting 或程序范围的 linting),我们将致力于发送贡献,使 ESLint 的 TypeScript 支持与 TSLint 达到对等。作为实践中如何工作的初步试验台,我们将把 TypeScript 存储库切换为使用 ESLint,并向上游发送任何新规则。

我们和许多 JavaScript 和 TypeScript 社区一样,对这个公告感到非常兴奋。ESLint 团队的几名成员在过去几年中一直致力于改进 TypeScript 兼容性,包括 James Henry、Kai Cataldo、Kevin Partington、Toru Nagashima 和 Nicholas Zakas。这项工作主要集中在 TypeScript 解析器 typescript-eslint-parser (以及部分集中在 eslint-plugin-typescript 上,后者不是由 ESLint 团队维护,而是由 Nicholas 和 James 维护直到最近)。Typescript 解析器无疑将成为未来 ESLint 中 TypeScript 故事的核心;因此,我们希望确保它得到妥善维护。

公告 typescript-eslint 项目

长期以来一直是 ESLint 兼容 TypeScript 的幕后功臣 James Henry 启动了 typescript-eslint 项目,作为一个集中化的仓库,用于存放所有与 TypeScript ESLint 兼容性相关的内容。这将是 TypeScript 解析器 eslint-plugin-typescript 以及任何其他将使 TypeScript ESLint 体验尽可能无缝的实用程序的新家。

虽然 ESLint 团队不会正式参与这个新项目,但我们完全支持 James 的努力,并将保持沟通渠道畅通,以确保 TypeScript 开发人员获得最佳的 ESLint 体验。

这对未来意味着什么

  1. ESLint 团队将不再维护 typescript-eslint-parser
    • 该仓库将从今天起存档
    • typescript-eslint-parser 将不会在 npm 上发布进一步的版本
  2. 任何使用 typescript-eslint-parser 的人都应该改用 @typescript-eslint/parser
  3. 那些对 TypeScript 支持进展情况感兴趣的人应该关注 typescript-eslint 仓库

再次强调,我们非常高兴欢迎 TypeScript 社区加入 ESLint 社区,并期待看到 James 和 typescript-eslint 团队如何使 ESLint 成为 linting TypeScript 代码的最佳选择。

最新的 ESLint 新闻、案例研究、教程和资源。

Evolving flat config with extends
5 分钟阅读

使用 extends 进化扁平化配置

您的 eslint.config.js 文件现在可以使用 extends 来简化您的配置。

ESLint v9.22.0 released
1 分钟阅读

ESLint v9.22.0 发布

我们刚刚推送了 ESLint v9.22.0,这是一个 ESLint 的次要版本升级。此版本添加了一些新功能并修复了先前版本中发现的几个错误。

ESLint v9.21.0 released
2 分钟阅读

ESLint v9.21.0 发布

我们刚刚推送了 ESLint v9.21.0,这是一个 ESLint 的次要版本升级。此版本添加了一些新功能并修复了先前版本中发现的几个错误。