typescript/no-unsafe-assignment 慎重なチェック
何をしますか
このルールは、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