Typescript tslint:防止使用“;的规则;。名称”;获取函数/类名的步骤
我正在创建一个tslint规则,以防止我的团队使用Function/Class“.name”。这是与一个问题有关的 到目前为止,我得到的是:Typescript tslint:防止使用“;的规则;。名称”;获取函数/类名的步骤,typescript,function,class,tslint,Typescript,Function,Class,Tslint,我正在创建一个tslint规则,以防止我的团队使用Function/Class“.name”。这是与一个问题有关的 到目前为止,我得到的是: import * as Lint from "tslint"; import * as tsutils from "tsutils"; import * as ts from "typescript"; export class Rule extends Lint.Rules.AbstractR
import * as Lint from "tslint";
import * as tsutils from "tsutils";
import * as ts from "typescript";
export class Rule extends Lint.Rules.AbstractRule {
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
return this.applyWithFunction(sourceFile, walk);
}
}
function walk(ctx: Lint.WalkContext<void>) {
function nodeChecker(node: ts.Node): any {
if (tsutils.isPropertyAccessExpression(node) && isUseOfNameForbidden(node.getText())) {
ctx.addFailureAtNode(node, "The use of .name if forbidden. It'll not work after minification.");
}
return ts.forEachChild(node, nodeChecker);
}
function isUseOfNameForbidden(text: string): boolean {
return /^[A-Z]*$/.test(text?.[0]) && text.endsWith(".name");
}
return ts.forEachChild(ctx.sourceFile, nodeChecker);
}
import*作为“tslint”中的Lint;
从“tsutils”导入*作为tsutils;
从“typescript”导入*作为ts;
导出类规则扩展了Lint.Rules.AbstractRule{
公共应用(sourceFile:ts.sourceFile):Lint.RuleFailure[]{
返回此.applyWithFunction(sourceFile,walk);
}
}
函数漫游(ctx:Lint.WalkContext){
函数nodeChecker(节点:ts.node):任意{
if(tsutils.isPropertyAccessExpression(node)和&isUseOfNameProbled(node.getText()){
ctx.addFailureAtNode(node,“如果禁止使用.name,缩小后将不起作用”);
}
返回ts.forEachChild(node,nodeChecker);
}
函数isUseOfNameForbidden(文本:字符串):布尔值{
return/^[A-Z]*$/.test(text?[0])&text.endsWith(“.name”);
}
返回ts.forEachChild(ctx.sourceFile,nodeChecker);
}
它只检查您是否引用了一个类(我假设我们所有的类都是PascalCase)
我知道这远非好事(我有史以来的第一条tslint规则)。我想知道是否有合适的方法来检查我引用的是类
还是方法/函数
提前谢谢