no-confusing-non-null-assertion
混乱を招く可能性のある場所で非nullアサーションを禁止します。
🎨
拡張 "plugin:@typescript-eslint/スタイル"
で ESLint設定 でこのルールを有効にします。
💡
このルールによって報告される問題の中には、エディターの 提案によって手動で修正できるものがあります。.
代入または等価チェック(`=`、`==`、`===`)の隣に非nullアサーション(`!`)を使用すると、不等価チェック(`!=`、`!==`)と似ているため、コードが混乱します。
a! == b; // a non-null assertions(`!`) and an equals test(`==`)
a !== b; // not equals test(`!==`)
a! === b; // a non-null assertions(`!`) and an triple equals test(`===`)
このルールは、混乱を招く`!`アサーションにフラグを立て、それらを削除するか、アサートされた式を`()`で囲むことを提案します。
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-confusing-non-null-assertion": "error"
}
};
Playgroundでこのルールを試してみてください ↗
例
- ❌ 正しくない
- ✅ 正しい
interface Foo {
bar?: string;
num?: number;
}
const foo: Foo = getFoo();
const isEqualsBar = foo.bar! == 'hello';
const isEqualsNum = 1 + foo.num! == 2;
Playgroundで開くinterface Foo {
bar?: string;
num?: number;
}
const foo: Foo = getFoo();
const isEqualsBar = foo.bar == 'hello';
const isEqualsNum = (1 + foo.num!) == 2;
Playgroundで開くオプション
このルールは設定できません。
使用しない場合
この混乱を気にする必要がない場合は、このルールは必要ありません。