Skip to content
← Back to rules

typescript/no-unsafe-member-access 細心

💭 This rule requires type information.

何を行うか

このルールは、型が 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

参照