Typescript 在没有严格 NULL 检查的情况下防止条件中未绑定/未调用的方法

问题描述 投票:0回答:1

对于 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 中添加了此检查,但是 根据文档此检查需要启用严格的空检查。

我也尝试过

angular typescript eslint typescript-eslint
1个回答
0
投票

allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing
中的
plugin:@typescript-eslint/no-unnecessary-condition
选项可以满足您的需求。即使关闭严格的空检查,它也可以运行 lint 规则。

该选项有一个幽默但不方便的长名称,因为它很危险。根据其文档:

如果由于某种原因您无法打开

strictNullChecks
,但仍想使用此规则 - 您可以使用此选项来允许它 - 但要知道,在编译器选项关闭的情况下,此规则的行为是未定义的。如果您使用此选项,我们将不接受错误报告。

...所以这里最好的情况是启用

strictNullChecks
。但如果您真的需要,那么这个危险的规则选项就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.