メインコンテンツへスキップ

no-unsafe-member-access

型がanyの値へのメンバーアクセスを許可しません。

拡張 "plugin:@typescript-eslint/recommended-type-checked" ESLintの設定 で有効にすると、このルールが有効になります。

💭

このルールは 型情報 が必要です。

TypeScriptにおけるany型は、型システムからの危険な「エスケープハッチ」です。anyを使用すると、多くの型チェックルールが無効になり、一般的には最後の手段として、またはコードをプロトタイピングするときにのみ使用するのが最適です。

最善の意図にもかかわらず、any型がコードベースに漏れ出すことがあります。any型付けされた値のメンバーにアクセスすると、コードベースに潜在的な型安全性の穴とバグの元が作成されます。

このルールは、anyと型付けされた変数へのメンバーアクセスを許可しません。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-unsafe-member-access": "error"
}
};

プレイグラウンドでこのルールを試す ↗

declare const anyVar: any;
declare const nestedAny: { prop: any };

anyVar.a;
anyVar.a.b;
anyVar['a'];
anyVar['a']['b'];

nestedAny.prop.a;
nestedAny.prop['a'];

const key = 'a';
nestedAny.prop[key];

// Using an any to access a member is unsafe
const arr = [1, 2, 3];
arr[anyVar];
nestedAny[anyVar];
プレイグラウンドで開く

オプション

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

使用しない場合

コードベースに既存のanyや安全でないコードの領域が多くある場合、このルールを有効にするのが難しい場合があります。プロジェクトの安全でない領域での型安全性を高めるまでは、no-unsafe-*ルールをスキップする方が簡単な場合があります。ESLintのdisableコメントを、このルールを完全に無効にする代わりに、特定の状況に使用することを検討してください。


型チェックされたリントルールは、従来のリントルールよりも強力ですが、型チェックされたリンティングを設定する必要があります。型チェックされたルールを有効にした後でパフォーマンスの低下が発生する場合は、パフォーマンスのトラブルシューティングを参照してください。

リソース