通过 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 规则