不允许在可能产生混淆的位置使用非空断言。
在赋值或者等于旁边使用非空断言(!)会产生混淆,看起来类似于不等于,不建议这种写法。
// 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;