目录

@typescript-eslint/no-confusing-non-null-assertion

不允许在可能产生混淆的位置使用非空断言。

在赋值或者等于旁边使用非空断言(!)会产生混淆,看起来类似于不等于,不建议这种写法。

规则配置

// code-linter.json5
{
  "rules": {
    "@typescript-eslint/no-confusing-non-null-assertion": "error"
  }
}

选项

该规则无需配置选项。

正例

interface Foo {
  bar?: string;
  num?: number;
}

function getFoo(): Foo {
  return {
    bar: 'bar',
    num: Number.MAX_VALUE
  };
}
const foo: Foo = getFoo();
export const isEqualsBar = foo.bar === 'hello';
const num = 2;
export const isEqualsNum = num + (foo.num!) === num;

反例

interface Foo {
  bar?: string;
  num?: number;
}

function getFoo(): Foo {
  return {
    bar: 'bar',
    num: Number.MAX_VALUE
  };
}
const foo: Foo = getFoo();
// 可能会产生混淆,误以为是不等于
export const isEqualsBar = foo.bar! === 'hello';
// 可能会产生混淆,误以为是不等于
const num = 2;
export const isEqualsNum = num + foo.num! === num;

规则集

plugin:@typescript-eslint/all

Code Linter代码检查规则的配置指导请参考Code Linter代码检查。