本文へスキップ

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で開く

オプション

このルールは設定できません。

使用しない場合

この混乱を気にする必要がない場合は、このルールは必要ありません。

参考資料

リソース