typescript和javascrpt代码检查的未来
背景
TypeScript是一个非常棒的JavaScript代码静态代码分析器,它在底层JavaScript语言之上提供了一些额外的语法。
- 在后台,它使用一个解析器将源代码转换成一种称为抽象语法树(AST)的数据格式。然后,插件使用这种数据格式来创建名为lint规则的断言,该断言围绕着代码的外观或行为。
ESLint是一个很棒的javascript代码检查工具。
- 在后台,它使用一个解析器将源代码转换成一种称为抽象语法树(AST)的数据格式。然后,TypeScript编译器的其他部分使用这种数据格式来做一些事情,比如对问题给出反馈,允许您轻松重构等等。
这两者有相似的地方,共同的地方就是帮助开发者写出更好的代码。ESLint和typescript两者都生成AST,但AST却不一样。
TSLint:TSLInt是一个基于typescript的AST格式的代码检查工具。
- 优点是不用在意AST之间的差异。最重要的缺点是不能够使用javascript生态系统一直以来总结的各种代码检查规则,必须从零开始重新实现,从基础的补全代码等规则开始。
结论:TSLint和TypeScript团队最终都声明将统一维护typescript-eslint项目,致力于将TSLint融入到ESlint中。
typescript-eslint-parser将成为过去
ESLint已经宣布不再继续维护typescript-eslint-parser
,并推荐使用@typescript-eslint/parser
代替。
如果有依然在使用的人,可以看这里,总结的如何在项目中使用代码检查。
typescript-eslint
多个包介绍
- @typescript-eslint/typesccript-estree:一个完全通用的TypeScript解析器,它接受TypeScript源代码并生成一个与estree兼容的AST
- @typescript-eslinnt/parser:一个特定于ESLint的解析器,它利用typescript-estree,旨在替代ESLint的默认解析器espree。
- @typescript-eslint/eslint-plugin:一个特定与ESLint的插件,当结合@typescript-eslint/parser使用时,允许运行特定于TypeScript的规则。
- @typesccript-eslint/eslint-plugin-tslint:一个特定于ESLint的插件,它在您的ESLint设置中运行一个TSLint实例,允许用户更容易地从TSLint迁移到ESLint。
如果希望一起使用TypeScript和ESLint,至少需要@typescript-eslint/parser和@typescript-eslint/eslint-plugin。
未来
TSLint团队计划与2019年废弃TSLint,并致力于融合ESLint支持Typescript和Javascript。