对于 Angular / Typescript 项目,我正在寻找 linting 规则或类似方法,以防止意外地将未绑定的方法放入条件中。
我正在寻找一个 linting 规则/配置,适用于使用 ES Lint 的项目,并且使用
strictNullChecks: false
配置了 Typescript。
我希望以下代码在 lint 或编译时产生错误:
export class Example {
constructor() {
if (this.isStillThe1900s) {
// the above should be an error because:
console.error("this will always be true because we forgot () on this.isStillThe1900s()");
}
}
private isStillThe1900s(): boolean {
return (new Date()).getFullYear() < 2000;
}
}
我知道 Typescript 在 3.7 中添加了此检查,但是 根据文档此检查需要启用严格的空检查。
我也尝试过
allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: true
allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing
中的plugin:@typescript-eslint/no-unnecessary-condition
选项可以满足您的需求。即使关闭严格的空检查,它也可以运行 lint 规则。
该选项有一个幽默但不方便的长名称,因为它很危险。根据其文档:
如果由于某种原因您无法打开
,但仍想使用此规则 - 您可以使用此选项来允许它 - 但要知道,在编译器选项关闭的情况下,此规则的行为是未定义的。如果您使用此选项,我们将不接受错误报告。strictNullChecks
...所以这里最好的情况是启用
strictNullChecks
。但如果您真的需要,那么这个危险的规则选项就可以了。