Skip to content
← Back to rules

typescript/no-unsafe-call 厳格

💭 This rule requires type information.

何を行うか

このルールは、型が any である値の呼び出しを禁止します。

なぜ悪いのか

TypeScript の any 型は型チェックを無効にします。any 型で宣言された値を呼び出すと、TypeScript はその値が実際に関数かどうか、どのパラメータを期待するか、あるいは何を返すかを検証できません。これにより実行時エラーが発生する可能性があります。

このルールに対して不正なコードの例

ts
declare const anyValue: any;

anyValue(); // 安全でない呼び出し

anyValue(1, 2, 3); // 安全でない呼び出し

const result = anyValue("hello"); // 安全でない呼び出し

// 連鎖的な安全でない呼び出し
anyValue().then().catch(); // 安全でない

このルールに対して正しいコードの例

ts
declare const fn: () => void;
declare const fnWithParams: (a: number, b: string) => boolean;
declare const unknownValue: unknown;

fn(); // 安全

const result = fnWithParams(1, "hello"); // 安全

// 未知の型に対する型ガード
if (typeof unknownValue === "function") {
  unknownValue(); // 型ガード後に安全
}

// 確信している場合の明示的な型アサーション
(anyValue as () => void)(); // 明示的に不安全だが意図的

使い方

このルールを構成ファイルまたは CLI で有効化するには、次のように使用できます:

json
{
  "rules": {
    "typescript/no-unsafe-call": "error"
  }
}
bash
oxlint --type-aware --deny typescript/no-unsafe-call

参照