- 原文地址:TSLint in 2019
- 原文做者:Palantir
- 译文出自:掘金翻译计划
- 本文永久连接:github.com/xitu/gold-m…
- 译者:LucaslEliane
- 校对者:EdmondWang, WangLeto
Palantir 是 TSLint 项目(TypeScript 的标准静态代码分析工具)的建立者和主要的维护者。TypeScript 社区正致力于提供统一的、跨 TypeScript 和 JavaScript 两种语言的开发体验,咱们在致力于 TSLint 和 ESLint 的融合,在这篇文章中,咱们会解释咱们为何要这么作以及如何去作。前端
如今,TSLint 事实上已是 TypeScript 项目的标准静态代码分析工具了。TSLint 的生态由一个核心的规范集,社区维护的多种自定义规则以及配置包组成。android
同时,ESLint 是 JavaScript 的标准静态代码分析工具。和 TSLint 同样,ESLint 也是由一个核心规范集和许多社区维护的自定义规则组成。ESLint 支持 TSLint 所缺乏的不少功能,好比,条件 lint 配置和自动缩进。相反,ESLint 的规则不能受益于(至少如今不能)TypeScript 语言所提供的静态分析以及类型推断,所以没法捕获 TSLint 语义规则所覆盖的某些类型的错误和代码异味(译者注:code smells)。ios
TypeScript 团队的战略方向是让“每一个桌面,在每栋房子里,每一个 JS 开发者都使用类型”。换句话说,这个方向主要是经过类型和静态代码分析来逐渐完善 JavaScript 的开发体验,直到 TypeScript 和 JavaScript 开发体验逐渐融合。git
很明显,静态代码分析是 TypeScript 以及 JavaScript 开发体验的一个核心部分,因此 Palantir 的 TSLint 团队和 Redmond 的 TypeScript 核心团队会面,讨论了 TypeScript 和 JavaScript 融合对于静态代码分析的意义。TypeScript 社区旨在知足 JavaScript 开发人员的需求,ESLint 是 JavaScript 的首选静态代码分析工具。为了不分裂 TypeScript 的静态代码检查工具,咱们计划废弃 TSLint,而且集中精力去改进 ESLint 对于 TypeScript 的支持。咱们认为这是正确的前进道路,具备战略意义而且务实的缘由:github
无障碍接入:JavaScript 开发人员迁移到 TypeScript 的障碍之一是从 ESLint 到 TSLint 的无障碍迁移。容许开发人员能够从现有的 ESLint 设置开始,逐步添加 TypeScript 特定的静态分析规则,能够下降这样的迁移障碍。typescript
社区整合:TSLint 和 ESLint 有着一样的核心目标:经过强大的规范集和可扩展的插件来提供出色的静态代码分析体验。如今,在 ESLint 中提供 TypeScript 解析,咱们认为这是让社区标准化的最好方式,而非工具之间的竞争。后端
更高性能的分析工具:ESLint API 支持更有效地进行某些类型的检查。虽然能够对于 TSLint 的 API 进行重构,可是直接利用 ESLint 的架构而且将开发资源集中到其余地方是明智的选择。架构
投入预估:在 Palantir 中,TSLint 为咱们的 TypeScript 语言实现的交易保驾护航;所以,其功能集和架构已经很是成熟,而且达到了稳定的状态。所以,咱们很难肯定须要的社区贡献,才可以让 TSLint 达到咱们承诺的水平。工具
Palantir 将会经过一系列功能和插件的贡献支持 TSLint 社区实现从 TSLint 到 ESLint 的平滑过渡。(快去叫 James Henry 和其余贡献者一块儿,让这个过程开始吧),好比:性能
在 TypeScript 中编写 ESLint 规范的支持和文档:能够参考这个 typescript-eslint issue。
typescript-eslint 的测试架构:ESLint 的内置规则测试器很难使用,而且测试用例语法很难阅读。咱们会提供相似于 TSLint 的测试基础架构的东西来保证 TSLint 规则的开发体验不会变差。
基于语义的类型检查规则:移植而且添加为 TypeScript 语言服务的新的规则。
一旦咱们以为 ESLint 中关于 TSLint 的特性已经完整,咱们就会废弃 TSLint,而且帮助用户们迁移到 ESLint,在那以前,咱们的主要任务包括:
继续维护 TSLint:在 TSLint 维护中,咱们最重要的任务是确保其与 TypeScript 新版本的编译器和功能的兼容性。
TSLint 到 ESLint 的兼容包:一旦 ESLint 静态分析检查功能到达了与 TSLint 相同的时候,咱们将会发布 eslint-config-palantir 包,这是将 TSLint 规则集集成到 ESLint 中的插入式替换。
咱们很高兴看到 TypeScript 和 TSLint 在过去几年中的应用变得愈来愈多,而且咱们也很高兴能为 Web 开发生态中更为具备影响力的 TypeScript 作出贡献!若是你有任何问题或者疑虑,请经过评论此帖子或者 Github issue 的方式与咱们取得联系。
Adi D.、John W.、Robert F. 和 Stephanie Y。
若是发现译文存在错误或其余须要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可得到相应奖励积分。文章开头的 本文永久连接 即为本文在 GitHub 上的 MarkDown 连接。
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。