Skip to content
← Back to rules

typescript/no-unsafe-assignment 慎重なチェック

💭 This rule requires type information.

何をしますか

このルールは、any 型の値を変数やプロパティに代入することを禁止します。

なぜ問題なのか

TypeScript の any 型は型チェックを無効にし、実行時エラーを引き起こす可能性があります。any 値を型指定された変数に代入すると、実際の値について何の保証もなく、TypeScript の型安全性を無視していることになります。

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

ts
declare const anyValue: any;

const str: string = anyValue; // 安全でない代入

let num: number;
num = anyValue; // 安全でない代入

const obj = {
  prop: anyValue as any, // 安全でない代入
};

interface User {
  name: string;
  age: number;
}

const user: User = anyValue; // 安全でない代入

このルールに準拠する適切なコードの例:

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

const str: string = stringValue; // 安全

let num: number;
num = numberValue; // 安全

// `unknown` に対して型ガードを使用
if (typeof unknownValue === "string") {
  const str2: string = unknownValue; // 型ガード後に安全
}

// 明示的な `any` 代入(推奨されませんが意図的)
const anything: any = unknownValue;

使い方

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

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

参照