typescript/no-unsafe-call 厳格
何を行うか
このルールは、型が 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