typescript/no-unsafe-member-access 細心
何を行うか
このルールは、型が any の値に対するメンバーアクセスを禁止します。
なぜ問題なのか
TypeScript の any 型は型チェックを無効にします。any と型指定された値に対してメンバ(プロパティやメソッド)にアクセスすると、TypeScript はそのメンバが存在するか、あるいはその型が何であるかを確認できません。これによりランタイムエラーが発生する可能性があります。
例
このルールに対して 不正な コードの例:
ts
declare const anyValue: any;
anyValue.foo; // 安全でないメンバーアクセス
anyValue.bar.baz; // 安全でないネストされたメンバーアクセス
anyValue["key"]; // 安全でない計算されたメンバーアクセス
const result = anyValue.method(); // 安全でないメソッドアクセスこのルールに対して 正しい コードの例:
ts
declare const obj: { foo: string; bar: { baz: number } };
declare const unknownValue: unknown;
obj.foo; // 安全
obj.bar.baz; // 安全
obj["foo"]; // 安全
// 未知型の型ガード
if (typeof unknownValue === "object" && unknownValue !== null && "foo" in unknownValue) {
console.log(unknownValue.foo); // 型ガード後の安全なアクセス
}
// 必要に応じて明示的な型アサーション
(anyValue as { foo: string }).foo; // 明示的に不安全だが意図的設定
このルールは以下のプロパティを持つ設定オブジェクトを受け入れます。
allowOptionalChaining
type: boolean
default: false
any 値に対して ?. オプショナルチェーンを使用することを許可するかどうか。 true にすると、any 値に対するオプショナルチェーンは警告対象外になります。 デフォルトは false です。
使用方法
設定ファイルまたは CLI でこのルールを 有効化 するには、次のように使用できます:
json
{
"rules": {
"typescript/no-unsafe-member-access": "error"
}
}bash
oxlint --type-aware --deny typescript/no-unsafe-member-access