Skip to content
← Back to rules

typescript/no-unsafe-argument 細かい

💭 This rule requires type information.

何をしますか

このルールは、any と型指定された引数で関数を呼び出すことを禁止します。

なぜ問題ですか

TypeScript の any 型は、型システムから「逃げ出す」危険な手段です。any を使用すると、ほとんどの型チェックルールが無効になり、一般的に安全ではありません。any と型指定された値を関数に渡すと、その関数呼び出しの型安全性が失われます。

このルールに違反する不正なコードの例:

ts
declare const anyValue: any;

function takesString(str: string): void {
  console.log(str.length);
}

takesString(anyValue); // 安全でない

declare function takesNumber(num: number): number;
const result = takesNumber(anyValue); // 安全でない

このルールに準拠する正しいコードの例:

ts
declare const stringValue: string;
declare const numberValue: number;
declare const unknownValue: unknown;

function takesString(str: string): void {
  console.log(str.length);
}

takesString(stringValue); // 安全

// 型ガードを使用して、`unknown` を安全に使用
if (typeof unknownValue === "string") {
  takesString(unknownValue); // 型ガード後は安全
}

// 型アサーション(タイプについて確信がある場合)
takesString(unknownValue as string); // 明示的に安全でないが意図的

使い方

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

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

参照