通过 TSLint 中的正则表达式禁用某些字符串的使用?

Posted

技术标签:

【中文标题】通过 TSLint 中的正则表达式禁用某些字符串的使用?【英文标题】:Disable use of some strings by regex in TSLint? 【发布时间】:2017-04-17 01:47:33 【问题描述】:

由于 javascript 转换为 TypeScript,我有时会在代码结构中看到这样的结果:

private doSomething = function (params: IParams) 

虽然正确的变体是:

private doSomething (params: IParams) 

前一个使其成为一个JS函数,它的主体不分析,按原样编译。 后者由 TypeScript 编译器检查,如果有错误的调用,例如另一个类的私有方法,它会抛出一个错误。

我想在 TSLint 中有一个规则,允许我标记为错误的字符串,例如 (private|public|protected)\s+(.+)=\s*function

那么,是否可以在 TSLint 中添加规则,可以作为现有插件,在字符串中搜索正则表达式?

【问题讨论】:

【参考方案1】:

恐怕没那么容易。 Tslint 允许您使用 Syntax Walkers 而不是正则表达式来声明 custom rules。

您的规则可以解析 TypeScript 生成的抽象语法树 (AST):

给定一个 walker,TypeScript 的解析器使用访问者模式访问 AST。所以规则步行者只需要重写适当的访问者方法来强制执行它的检查。

我不确定,但您可能需要 visitPropertyAssignment walker。

【讨论】:

以上是关于通过 TSLint 中的正则表达式禁用某些字符串的使用?的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 Angular 模板上的 Codelyzer 禁用 tslint 规则

正则表达式语法

正则表达式用来根据某种匹配模式寻找字符串中的某些单词。

R中的正则表达式:匹配所有内容,但不匹配“某些字符串”[重复]

正则表达式用 JQuery ui 自动完成替换某些字符

VS Code 中的 TSLint 配置