根据正式的tslint,tslint应该只在编译typescript代码之后执行。这背后的原因是什么?
正式文件:https://palantir.github.io/tslint/usage/cli/
最佳答案
tslint对从typescript接收的经过解析的ast(抽象语法树)运行。如果它从typescript接收的ast有错误,那么它的规则逻辑可能会做出一些错误的假设。
定义其中一些术语:
ast:linter将分析的代码的树状表示。你可以玩astexplorer.net来看看这是什么样子;它很漂亮!_
语法错误:如果您编写代码,例如led foo = "bar";
(led
而不是let
)。typescript将创建一个不同于您预期的代码表示形式。
语义错误:如果您编写的代码没有语法错误,但类型检查器发现有问题,例如let foo: number = "bar";
。
tslint还有一个问题要讨论,它是否应该检查有语法或语义错误的代码:https://github.com/palantir/tslint/issues/3808
另外两点有利于在无效的源文件上不运行tslint:
很多人很难区分ts和ts lint错误,因此当一个无效的文件导致很多lint错误时,可能会混淆。
不编译的t s代码在修复后往往会有不同的linting问题,因此要求人们修复它们和ts错误是有点浪费的。
关于javascript - 编译Typescript文件后,为什么应执行ESlint?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53741829/