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