
几周前,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 体验。
这对未来意味着什么
- ESLint 团队将不再维护
typescript-eslint-parser
- 该仓库将从今天起存档
typescript-eslint-parser
将不会在 npm 上发布进一步的版本
- 任何使用
typescript-eslint-parser
的人都应该改用@typescript-eslint/parser
- 那些对 TypeScript 支持进展情况感兴趣的人应该关注
typescript-eslint
仓库
再次强调,我们非常高兴欢迎 TypeScript 社区加入 ESLint 社区,并期待看到 James 和 typescript-eslint
团队如何使 ESLint 成为 linting TypeScript 代码的最佳选择。